最近遇到OC和Swift的混编问题,就查找了一下资料,发现众说纷纭,在此总结一下自己亲测的用法,可能与其他稍有出入,欢迎指正评论。
一、OC中注入Swift代码
1、首先须标明告知编译器,可以使用Swift代码,续作以下操作
build Setings 搜索embed ,将下图所标选选项设置为YES
build Setings 搜索defines mode 将箭头所指的项设置为YES
2、设置完上述选项后,将需要使用的Swift代码文件直接拖入工程,切记Swift文件中的类与方法名若是需要外部调用,都需要是public访问权限,否则将无法正常访问,拖入时会有下边所示的提示
点击finish后
直接点击Create Bridging header,此时工程中会多出一个 工程名-Bridging-Header.h的文件,此文件一定不要修改,否则无法编译通过
使用Swift中的类与方法,只需在需要使用的OC的文件中导入 工程名-Swift.h的头文件,你就可以像调用OC类一样使用Swift中的代码了,需要注意的是,工程名-Swift.h的头文件是系统自主创建的,没有暴漏到工程中,但是我们按住command + 点击头文件,还是可以看到内部实现的
此处截取一小部分都是一下转化桥接。
二、swift中调用OC的代码
swift中调用OC的代码,个人亲测,相对简单一些,自己所需做的工作也是很少,只需将所需的OC代码拖入Swift工程,点击finish -》Create Bridging header,此时工程会自动生成工程名-Bridging-Header.h的头文件,需要将所需的OC的头文件导入 工程名-Bridging-Header.h的头文件中,即可正常使用
在需要使用的地方就可以直接使用了,无需导入相应头文件。
第一次写这东西,就这些吧,亲测可用,可能与大神们使用方法有些不同,欢迎指正交流!!!
参考:
http://ju.outofmemory.cn/entry/118111
http://www.cnblogs.com/kenshincui/p/4824810.html