350 字
2 分钟
OC项目中加入Swift混编
2020-10-13
2026-10-12
无标签

年后项目准备引入 Swift 新的模块需求使用 Swift 编写 需要支持与 OC 与 Swift 的混编 这里描述一下前期准备的工作

Project_defines module 配置#

Project_product module name 配置#

这里的 Product Module Name 需要和 工程名称 一致

代码修改#

在需要调用到 Swift 的地方 import#

#import "工程名称-Swift.h"

注意点#

  • 这个文件 import 不会自动提示
  • 而且如果项目汇总没有 swift 文件的话编译也会报错
  • 不要自己去创建这个名字的文件
  • 只需要在项目中创建一个 Swift 文件这个文件就会自动生成

需要暴露给 Swift 调用的#

在 OC 项目中创建 swift 文件后会创建一个桥接文件 工程名-Bridging-Header.h 所有需要暴露给 swift 调用的文件都在这里 import 即可

注意点#

  • 需要注意的是: 如果 import 的 .h 中有用到 全局导入的引用 时,编译会报错,这时需要在该被 import 的 .h 文件中添加相关引用或者使用 @class 即可
  • 项目中的 Swift 文件中使用上面 import 过的 OC类 无须再单独 import
  • 如果在添加到桥接文件中后某些类型依旧报错 可以尝试将其在桥接文件中的位置提前

Apple官方混编指南#

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122

国内汉化#

https://github.com/CocoaChina-editors/Welcome-to-Swift/blob/master/UsingSwiftwithCocoaandObjective-C中文手册.md