Osheep

时光不回头,当下最重要。

swift 与 oc 文件相互调用

由于公司需要,今天开始学习swift,打算先创建个工程,做基本代码测试,结果刚开始的文件相互调用就遇到了问题,在这里把自己调试的过程记录下

初学者的我,任何简单的一步,都是学习的过程

1:创建swift文件

创建文件时会自动提示创建桥接文件SwiftTestProject-Bridging-Header.h,这个文件是swift调用oc时用到的

《swift 与 oc 文件相互调用》

create swift file.png
2:工程配置

找到工程文件下的TARGETS-Build settings 中搜索 Defines Module 设置为YES

《swift 与 oc 文件相互调用》

Build settings.png

同样找到工程文件下的TARGETS-Build settings 中搜索Product mo 设置为工程名,这时工程会自动创建一个项目名-Swift.h的文件,该项目中为“SwiftTestProject-Swift.h”,这个文件用于oc调用swift文件

《swift 与 oc 文件相互调用》

Build settings_1.png
3:oc调用swift文件

引入以项目名-Swift.h文件,注意这个文件没有提示,要手动打出来,该项目中为#import “SwiftTestProject-Swift.h”

《swift 与 oc 文件相互调用》

oc call swift.png
4:swift调用oc文件

在之前创建的桥接文件中引入oc 的.h文件,该项目中为SwiftTestProject-Bridging-Header.h文件

《swift 与 oc 文件相互调用》

swift call oc.png
《swift 与 oc 文件相互调用》

swift call oc_1.png

注意和总结

1、在创建swift文件时,根据系统提示的创建桥接文件,如果未提示或当时未创建也可自定义桥接文件,下面有提到
2、要在targets-build settings中设置Defines Module为YES
3、在oc调用swift类时,swift类中要先去继承一下oc的类文件,否则调用swift类时会报错
4、swift文件有的时候写的是对的,也会报错,但是不一定真的是有错误,所以记得command+B 编译下
5、oc引用swift文件要引用“项目名-Swift.h”文件(我是没有提示,应该都这样吧),swift引用oc文件要创建桥接文件,桥接文件中引用oc的.h文件

创建桥接文件

如果系统提示时未创建桥接文件或未提示,可以根据下面步骤创建桥接文件
创建一个Header File文件,一般命名为“项目名-Bridging-header”,内容清空,找到Build Settings搜索Objective-c Bridging header,将刚刚创建的桥接文件的路径添加到Objective-c Bridging header中,编译运行即可

《swift 与 oc 文件相互调用》

create Bridging Header.png
点赞