桥接问题
桥接
image-20230316220515011.png
image-20230316220539263.png
image-20230316220636806.png
image-20230316220831205.png
如何在Swift和Objective-C中相互调用
Swift调用OC
image-20230316221029865.png
OC调用Swift
image-20230316221141304.png
image-20230316221809367.png
NS_SWIFT_NAME
- 在Objective-C中,重新命名在swift中的名称
NS_SWIFT_UNANAILABLE
image-20230316223250861.png
image-20230316223311534.png
Swift和Objective-C混合调用踩坑指南
Subclass
- 对于自定义的类而言,Objective-C的类,不能继承自Swift的类,即要混编的OC类不能是Swift类的子类。反过来,需要混淆的Swift类可以继承自OC的类
宏
image-20230316223601861.png
image-20230316223724791.png
Swift独有特性
- Swift中有许多OC没有的特性,比如,Swift有元组、为一等公民的函数、还有特有的枚举类型。所以,要使用的混编文件要注意Swift独有属性问题
NS_REFINED_FOR_SWIFT
- Objective-C的API和Swift的风格相差比较大,Swift调用Objective-C的API时可能由于数据类型等不一致导致无法达到预期(比如,Objective-C里的方法采用了C语音风格的多参数类型;或者Objective-C方法返回NSNotFound,在Swift中期望返回nil)。这时候就要NS_REFINED_FOR_SWIFT了
image-20230316224234351.png