Swift 与 OC 桥接
Swift与OC桥接
第一次学习Swift
时是2.1 & 2.2
版本, 后来升级到3.0
后只是简单的看过一点点变化, 如今再次学习Swift
已经是5.3
, 之前写Swift
就是生搬硬套, 很多框架仍然是通过CocoaPods
安装的OC
类库, 但这并不会是一个长久的方案, 所以建议那些还没有完全熟悉Swift
的开发者今早学习切换到Swift
, 尽可能通过Swift
实现的就不要再桥接OC
文件
Swift项目中调用OC类
首先在Swift工程中新建一个OC类进行演示
在点击
Next-->选择路径
后,会提示是否创建一个桥接文件注意:这个提示只会在Swift项目第一次创建OC类时提醒,如果点击了
Cancel
或者是Don't Create
,当此项目再创建OC类时,不会提醒创建桥接文件这里先选择
Create Bridging Header
来演示,在我们创建好一个OC类的同时,系统会自动帮我们以项目名称-Bridging-Header
生成一个桥接文件OC_Swift-Bridging-Header.h
将OC类的头文件导入到桥接文件中
#import "Person.h"
这样就可以在Swift类中使用OC类了
lazy var person: Person = Person()
OC项目中调用Swift类
还是在刚刚的Swift项目中,直接新建一个OC控制器类,将StoryBoard中初始控制器的身份检测器标识换成OC类
在刚刚的项目中新建一个
Student
的Swift类在OC类中调用Swift类,需要按照
#import "项目名-Swift.h"
格式导入头文件,例如:#import "OC_Swift-Swift.h"
注意:如果项目名称中同时包含 中文、数字和 "-" ,可能会导致失败
这样就可以在OC项目中使用Swift类了
Student *student = [[Student alloc] init];
如果手动创建桥接文件,需要手动配置路径(类似于PCH文件一样)
- 创建桥接文件:
iOS
-->Source
-->Header File
- 配置路径:点击项目-->
Build Settings
-->Swift Compiler
-Code Generation下的Object-C Bridging Header
后补全路径