项目名-Bridging-Header.h
swift桥接文件,创建 swift 文件时 Xcode 自动创建,也可以手动创建,
swift调用oc的时候,需要将调用的 OC文件/三方库 通过 #import 的形式添加到桥接文件内
项目名-Swift.h
项目执行 build 成功后,系统自动创建
oc调用swift的时候,需要在oc文件中通过 #import 的形式将项目名-Swift.h 文件添加到OC文件中
OC在使用Swift 三方类库的时候,需要通过 @import 的形式引入到对应文件中
weak 和 unowned区别
weak代表着弱引用。当对象被声明为weak时,父层级对此对象没有指向,该对象的引用计数不会增加1。它在对象释放后弱引用也随即消失。继续访问该对象,程序会得到 nil,不亏崩溃unowned与弱引用本质上一样。不同的是,unowned 无主引用 实例销毁后仍然存储着实例的内存地址(类似于OC中的unsafe_unretained), 试图在实例销毁后访问无主引用,会产生运行时错误(野指针)
weak相对于unowned更兼容,更安全,而unowned性能更高;这是因为weak需要操作散列表,而unowned只需要操作64位位域信息;在使用unowned的时候,要确保其修饰的属性一定有值;
那么针对弱引用和无主引用如何选择呢?
- 如果强引用的双方生命周期没有任何关系,使用
weak,如delegate; - 如果其中一个对象销毁,另一个对象也跟着销毁,则使用
unowned;