Swift 与 OC 桥接

优质
小牛编辑
127浏览
2023-12-01

Swift与OC桥接

第一次学习Swift时是2.1 & 2.2版本, 后来升级到3.0后只是简单的看过一点点变化, 如今再次学习Swift已经是5.3, 之前写Swift就是生搬硬套, 很多框架仍然是通过CocoaPods安装的OC类库, 但这并不会是一个长久的方案, 所以建议那些还没有完全熟悉Swift的开发者今早学习切换到Swift, 尽可能通过Swift实现的就不要再桥接OC文件

Swift项目中调用OC类

  1. 首先在Swift工程中新建一个OC类进行演示

    在点击Next-->选择路径后,会提示是否创建一个桥接文件

    提示是否创建桥接文件.png

    注意:这个提示只会在Swift项目第一次创建OC类时提醒,如果点击了Cancel或者是Don't Create,当此项目再创建OC类时,不会提醒创建桥接文件

  2. 这里先选择Create Bridging Header来演示,在我们创建好一个OC类的同时,系统会自动帮我们以项目名称-Bridging-Header生成一个桥接文件OC_Swift-Bridging-Header.h

  3. 将OC类的头文件导入到桥接文件中 #import "Person.h"

  4. 这样就可以在Swift类中使用OC类了 lazy var person: Person = Person()

    Importing Objective-C into Swift

OC项目中调用Swift类

  1. 还是在刚刚的Swift项目中,直接新建一个OC控制器类,将StoryBoard中初始控制器的身份检测器标识换成OC类

  2. 在刚刚的项目中新建一个Student的Swift类

  3. 在OC类中调用Swift类,需要按照#import "项目名-Swift.h"格式导入头文件,例如: #import "OC_Swift-Swift.h"

    注意:如果项目名称中同时包含 中文、数字和 "-" ,可能会导致失败

  4. 这样就可以在OC项目中使用Swift类了 Student *student = [[Student alloc] init];

    Importing Swift into Objective-C

如果手动创建桥接文件,需要手动配置路径(类似于PCH文件一样)

  1. 创建桥接文件:iOS-->Source-->Header File
  2. 配置路径:点击项目-->Build Settings-->Swift Compiler - Code Generation下的Object-C Bridging Header后补全路径