会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
zbblogs
博客园
首页
新随笔
联系
管理
订阅
上一页
1
2
3
4
下一页
2021年8月18日
swift中调用c/c++
摘要: 做过OC与swift混编的都知道,若实现swift调用OC的方法或OC调用swift方法,需要建立一个桥接文件,例如命名:MyBridging.h,在Build Settings中添加配置Swift Compiler - General中的Objective-C Bridging Header:My
阅读全文
posted @ 2021-08-18 17:56 zbblogs
阅读(1944)
评论(0)
推荐(0)
2021年8月16日
利用ManagedBuffer<Header, Element>实现自定义数组类型
摘要: 我们知道swift中的数组类型为Array<Element>,它用于存储不同类型的元素,并且它是一个结构体struct,因此它是一个值类型,拥有写时拷贝特性。apple为我们提供了ManagedBuffer,用于存储不同类型的元素到缓冲区指针中,因此我们可以通过ManagedBuffer自己实现一个
阅读全文
posted @ 2021-08-16 15:57 zbblogs
阅读(195)
评论(0)
推荐(0)
2021年8月13日
swift结构体发生深拷贝时,如何将其内部的class类型属性也进行深拷贝
摘要: 我们知道swift值类型的变量在赋值操作后会放生深拷贝,即:赋值拷贝,而class类型的变量只会浅拷贝。我们看一个例子: class MyClass { var list: [Int] init(_ list: [Int]) { self.list = list } } struct MyStruc
阅读全文
posted @ 2021-08-13 18:36 zbblogs
阅读(539)
评论(0)
推荐(0)
判断一个AnyObject实例是否存在唯一的强引用isKnownUniquelyReferenced
摘要: isKnownUniquelyReferenced:用于判断一个AnyObject实例是否只存在唯一的强引用 class MyClass {} 判断MyClass实例存在唯一的强引用的例子: var cls = MyClass() if isKnownUniquelyReferenced(&cls)
阅读全文
posted @ 2021-08-13 16:49 zbblogs
阅读(278)
评论(0)
推荐(0)
Swift内存布局与指针操作
摘要: 在讲解指针之前,我们先来了解一下内存布局,计算机中的内存都是以字节为单位存储的,但是大部分处理器并不是按字节块来存取内存的。它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存,我们将上述这些存取单位称为内存存取粒度。所以我们需要通过一种内存对齐方式来存取,这样一方面可以节省内存,
阅读全文
posted @ 2021-08-13 16:34 zbblogs
阅读(990)
评论(0)
推荐(0)
2021年8月9日
Combine框架简介与使用
摘要: Combine 是 Apple 对函数响应式编程库的实现,类似于RxSwift,它实现了大部分的RxSwift中的功能,但也存在一部分没有实现的功能,这里有一个Combine与RxSwift功能对照表,点击查看。Combine是SwiftUI的核心库,SwiftUI中的大部分属性包装器,例如@Sta
阅读全文
posted @ 2021-08-09 19:01 zbblogs
阅读(3532)
评论(0)
推荐(0)
2021年6月24日
泛型 与 some(Opaque Type)
摘要: 泛型:实质上就是不使用具体数据类型(例如 int、double、float 等),而是使用一种通用类型来进行程序设计的方法,该方法可以大规模的减少程序代码的编写量,让程序员可以集中精力用于业务逻辑的实现。 在OC中泛型通常用于以下情况: class MyContainer<T> { private
阅读全文
posted @ 2021-06-24 20:10 zbblogs
阅读(602)
评论(0)
推荐(0)
2021年6月23日
@State实现原理以及自我实现@State功能
摘要: 用过SwiftUI开发页面的同学,对@State的使用非常常见,它是用来监控属性值的变化,并通知SwiftUI更新页面的。 之前的文章中我已经介绍过@propertyWrapper的简单运用,不知道的同学,可以点击查看。 结合@propertyWrapper的运用,我们可以推断@State的实现原理
阅读全文
posted @ 2021-06-23 16:54 zbblogs
阅读(1018)
评论(0)
推荐(0)
2021年6月22日
@propertyWrapper(属性包装器)
摘要: @propertyWrapper(属性包装器) 在swiftUI中大量使用了属性包装器,用来监控数据变化,从而更新UI的@State包装器等等。 通过@propertyWrapper注解,我们也可以实现自定义的属性包装,它可以应用在class、struct、enum类型上,下面我们通过struct来
阅读全文
posted @ 2021-06-22 20:20 zbblogs
阅读(1035)
评论(0)
推荐(0)
@dynamicCallable与callAsFunction(将类型实例作为函数调用)
摘要: @dynamicCallable与callAsFunction都是可以通过类型实例作为函数调用的实现方法。 @dynamicCallable实现方式,将此属性应用于类、结构、枚举或协议,以将该类型的实例视为可调用函数,你必须实现dynamicallyCall(withArguments:) 或dyn
阅读全文
posted @ 2021-06-22 17:00 zbblogs
阅读(305)
评论(0)
推荐(0)
截取包含表情符的字符串时,如何获取完整的字符长度?
摘要: 在截取字符串时,有时我们需要考虑表情符字符,因为不同的表情符字符长度不一样,例如:😁的长度为2。 NSLog(@"length: %ld", @"😁".length); // 此处输出为:length: 2 NSLog(@"length: %ld", @"👴🏻".length); // 此处
阅读全文
posted @ 2021-06-22 14:43 zbblogs
阅读(524)
评论(0)
推荐(0)
2021年6月8日
让Xcode提示相关标记性的警告
摘要: 让Xcode在编译时,提示相关如下标记警告: // TODO: 待完成的任务 // FIXME: 带修复的bug // ERROR: 错误信息 1、选中工程项目的target 2、选中Build Phases 3、添加Run Script,脚本内容如下: TAGS="TODO:|FIXME:" ER
阅读全文
posted @ 2021-06-08 16:55 zbblogs
阅读(250)
评论(0)
推荐(0)
2021年5月7日
编译openssl iOS静态库
摘要: 到openssl官网下载openssl源码:https://www.openssl.org/source/ 目前我选择的稳定版本为:openssl-1.1.1k 1、编译x86_64平台 首先需要修改Configurations/15-ios.conf配置文件,这个配置文件里面的target是基于1
阅读全文
posted @ 2021-05-07 13:35 zbblogs
阅读(2632)
评论(0)
推荐(0)
2020年4月21日
图片解码
摘要: 有两种方式 1、通过获取绘图上下文,将图片绘制到上下文中,然后从上下文中取出这个图片(优点就是,绘图过程会对图片做优化处理) 2、通过CGDataProviderCopyData( CGDataProviderRef cg_nullable provider)进行解码 说明:[UIImage ima
阅读全文
posted @ 2020-04-21 17:07 zbblogs
阅读(5220)
评论(0)
推荐(0)
2020年3月25日
单精度或双精度小数比较时的误差处理
摘要: DBL_EPSILON和 FLT_EPSILON主要用于单精度和双精度的比较当中 我们在对小数比较的时候,经常会出现如下情况: double a = 0.5; if (a == 0.5) //正确 x++; double b = sin(M_PI / 6.0); if (b == 0.5) //错误
阅读全文
posted @ 2020-03-25 16:07 zbblogs
阅读(1145)
评论(0)
推荐(0)
上一页
1
2
3
4
下一页
公告