OC-swift 混编
开始
OC项目添加一个swift文件或者swift创建OC文件,Xcode会提示是否创建桥接文件,选择是,使用默认名字,会创建一个”<#工程名#>-Bridging-Header.h”的文件。
如果选择了否,后面也可以手动创建一个.h文件,然后在Build Setting -> Swift Complier - General -> Objective-C Bridging Header 手动添加这个.h文件的路径。
桥接文件是swift调用OC时使用,而OC调用swift则需要在OC文件里import “<#工程名#>-Swift.h”文件,”<#工程名#>-Swift.h”文件是自动生成的工程中不可见,直接使用即可。
类的调用
OC调用OC的类
#import “类名.h”
OC调用swift类
#import “<#工程名#>-Swift.h” ,然后可使用所有的swift类(受访问权限影响),这个import只会作用于当前文件,所以这行代码最好放到pch文件里。
swift调用swift类
无需import,直接使用。(受访问权限影响)
swift调用OC类
需要把所有用到的OC文件放到”<#工程名#>-Bridging-Header.h”中,所有swift文件内就都可以使用了。
第三方库使用
swift使用cocospod需要在Podfile中加入use_framework!
OC调用OC的库
#import “库.h”
OC调用swift库
#import “<#库名#>-Swift.h”,就可以使用了。
swift调用OC/swift库
都可以import <#库名#>来使用。
特别的,调用OC的库还可以在桥接文件里 #import “库.h”,这样swift可以全局使用这个库。
代理
swift使用OC协议
swift类遵循一下协议实现即可。
OC使用swift协议
不能直接用,需要把定义在swift里的protocol,前面加@objc关键字,转化为OC协议后,才可使用。
其它
- swift 完全摒弃了宏,所以原OC项目中的宏在swift都不可用,需要新建一个swift文件,然后用let/ver fun 来替代宏的内容。新建swift文件里变量和方法默认全局可用。
- 继承:swift可以继承OC类,OC不能继承swift类。
如有遗漏,欢迎补充