swift之OC与Swift混编
1、在Swift工程添加OC代码
在swift语言里,同一个项目内的文件基本会放在同一个命名空间里,所以没有.h文件。如果想在swift工程中添加OC代码,需要解决怎么引用OC代码的头文件问题。具体的解决办法就是:新建一个Header File文件里。
如下图所示,在新建的.h文件里面,添加OC代码的头文件
然后需要在项目部署里面配置该引用文件
这样就可以在swift文件里面按照swift语法来调用OC代码了
2、在OC工程中加入Swift代码
oc里面都有头文件,但是swift没有头文件,因此我们需要产生一个头文件。当你在OC工程里面新建swift文件话,工程会给你自动创建一个比较特殊的头文件。如下图所示,Xcode会根据module Name,生成一个名字为moduleName-Swift.h的文件。
在需要调swift代码的.m文件里面,加入“#import Modulename-Swift.h”,如下图所示。你在整个工程中是找不到这个文件的,但可以使用CMD+鼠标点击可看到这个头文件中的内容。
使用CMD+鼠标点击看到这个头文件中的内容,具体内容如下:
特别要注意的是:用swift写的类,如果不继承自NSObject或者NSObject的派生类,哪么编译后将不会生成对应的转换类,从而使得OC中找不到相应的声明。具体解释可以参考:http://blog.csdn.net/zhzmaren/article/details/53283835。具体写法如下所示:
总之,工程中如果Swift要使用OC,则需要把使用OC类的头文件,全写在SayOO1-Bridging-Header.h文件里面。同样,如果OC中使用Swift类,需要在OC代码里面导入SayOO1-swift.h。