OC 项目混编Swift
-
在OC项目中初始创建swift文件时,会提醒创建桥接文件
点击 Create Bridging Header 就会生成一个桥接文件
如果误点导致没有创建桥接文件,可手动创建一个 “工程名-Bridging-Header.h" 的头文件,然后在工程中配置文件(参考下一步) -
工程配置
target | Build Settings
-
swift 引用 OC
在桥接文件中导入Swift需要访问的OC类,.Swift文件中即访问OC的类了 -
OC 引用 Swift
需要导入隐式头文件:xxx-Swift.h,xxx-Swift.h在项目中是看不到的,但是确实是可以import的
编辑import时,Xcode 并不会有导入该头文件的快捷提示
我们可以创建一个头文件,然后在该头文件中引入这个隐式头文件:
问题
1. OC 中无法调用Swift的方法:
隐式 @objc 自动推断
class SwiftClass { }
@objc extension SwiftClass {
func foo() { } //包含隐式的 @objc
func bar() { } //包含隐式的 @objc
}
2. 无法引用class.
class 需要继承 NSObject
3. 无法使用swift定义的enum
在这个枚举前加上 @objc( 枚举 )即可
@objc(DMSCropProportionOrientation)
enum DMSCropProportionOrientation: Int {
case unknown = -1
case landscape = 0
case portrait = 1
case auto = 2
}