swift之OC与Swift混编
2017-08-13 16:46
232 查看
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语言里,同一个项目内的文件基本会放在同一个命名空间里,所以没有.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。
相关文章推荐
- OC与swift混编
- 初探swift语言的学习笔记九(OC与Swift混编)
- Swift 与 OC 混编
- Oc与Swift混编------如何创建头文件(桥接)
- Swift UI Demo- 表格,标签,文本框,按钮,网络请求Oc混编
- cocoapod Podfile use frameworks swift/oc混编 could not build module xxx
- IOS-Swift混编 调用OC的Block
- 初探swift语言的学习笔记九(OC与Swift混编)
- swift与OC混编高级教程之混编框架的创建和调用
- OC与Swift混编
- 用Swift与OC混编制作iOS8风格菜单
- OC + Swift 混编 (一)
- iOS开发之Swift与OC混编实现
- iOS8开发~Swift(五)Swift与OC混编
- OC和Swift混编
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
- OC与swift混编-oc中调用swift方法
- Swift中混编OC第三方库
- Swift与OC混编