首页 > 代码库 > swift之OC与Swift混编

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。

 

swift之OC与Swift混编