Objective-C和swift混编

最近对一个现有项目进行重构,感觉swift出来这么久了,还没用它进行实际项目的编写,所以打算利用这次机会重新熟悉下swift。由于项目依赖的私有库或者开源库大都是由Objective-C写的,当我创建一个swift项目后,首先考虑的是怎么在swfit项目中调用Objective-C接口(项目使用cocoapods管理)。

在swift项目中调用OC接口,只需要创建一个桥接文件,文件名为:ProjiectName-Bridging-Header.h 。有两种方式可以创建该桥接文件:

  • 在swift项目中,新建一个OC类,此时会自动弹出一个提示框,提示是否创建Objective-C桥接文件,点击创建即可。
  • 手动创建该桥接文件,创建完之后还需要配置桥接文件路径:TARGETS -> Build Setting -> Swift Compiler-General -> Objective-C Bridging Header,这里设置相对路径就好,比如 ProjiectName/ProjiectName-Bridging-Header.h

创建桥接文件之后,在该文件内import你需要的OC头文件。

如果发现还是调用不了OC接口,或者识别不了桥接文件中的OC头文件,你还需要进行下面的配置:

TARGETS-> Build Phases -> Link Binary With Libraries 进入到这里,点击+号,把我们需要的第三方库添加进去;然后到 TARGETS-> Build Setting -> User Header Search Paths, 设置为 recursive

这样就OK了。