前言
对于OC和swift混编这件事,我之前一直是拒绝的,因为改动大,而且改完后要重新测。对于项目开发任务紧的我来说,很少有时间去考虑。后来年前到这段时间时间空出来了,于是就开始萌生混编的想法,想把手上的项目慢慢从边缘替换为swift,顺便巩固下swift的知识。毕竟swift用的确实比OC爽。
正题
混编有OC+swift的,也有swift+OC的
因为项目是老项目,所以用的是OC+swift混编
- 第一步 先在OC项目里创建swift文件 在OC工程里创建一个Swift类会跳出如下弹框
就是Xcode问你要不要帮你创建一个桥接文件,建议你点创建 即Create Bridging Header
按钮生成桥接文件xxx-Bridging-Header.h和xxx-Swift, xxx是工程名称。同时会在Build Settings里添加Swift Complier配置:
如果点击的是不创建,那就要自己手动去创建桥接文件,才能进行混编 在Swift Complier里面自己添加桥接文件的路径
- 第二步 将生成的xxx-Swift.h文件放入.pch文件中
因为主工程是OC写的,所以大多数情况是OC调用swift,所以为了方便,我们将xxx-Swift.h这个头文件放入oc的pch文件中,这样当OC调用swift时 就不用每次引入xxx-Swift.h
- 第三步 对于OC想调用的方法,想传的参数,想遵守的协议 都需要加上@objc 不然在OC中是找不到这个方法的 特别是协议,一点要加
-
第四步 如果想swift调用OC的文件,就必须在
xxx-Bridging-Header.h桥接文件里引入需要被Swift调用的类 注意:如果是swift想调用OC的 A.h文件,A.h又引入了B.h 在xxx-Bridging-Header.h这个文件里,就必须把A和B这两个文件都引入进去。 -
第五步 如果想使用swift的pod 就需要在podfile文件里加上 use_frameworks! 才能pod install
尾声
混编总体来说,不算特别难,最主要的是第四步,每次想调用OC写好的一些方法时,都要查找有没有交叉引用。这点是最麻烦的