一、同一个 Target 中:
Language | Import into Swift | Import Into Objective-C |
---|---|---|
Swift | - | #import "ProductModuleName-Swift.h" |
Objective-C | Objective-C 桥接文件 | #import "Header.h" |
- 桥接文件
ProjectName-Bridging-Header.h
,这个文件主要是Swift使用OC类时使用。在首次创建其他文件时,会自动生成。如果不小心删除了,可手动新建Header file后,在Targets --> Build Settings --> Swift Compiler - General --> Objective-C Bridging Header
配置文件路径。 -
ProductModuleName-Swift.h
是系统生成的Swift文件对应的Objective-C的头文件,可在Targets --> Build Settings --> Swift Compiler - General --> Objective-C Generated Interface Header Name
进行配置,一般不做改动。当在OC文件中调用Swift文件中的类时,首先在OC文件中要加上#import "ProjectName-swift.h”
。
二、同一个 framework 内
Language | Import into Swift | Import Into Objective-C |
---|---|---|
Swift | - | #import <ProductName/ProductModuleName-Swift.h> |
Objective-C | Objective-C umbrella header | #import "Header.h" |
-
Objective-C umbrella header
是 Objective-C代码引入Swift使用时的头文件,名为ProductModule-umbrella.h
,使用流程如下:
1)编写Objective-C代码
2)设置Objective-C类的.h文件为public(一般来说默认就是public的,如下图)
3)在示例程序中pod install
之后,会在ProductModule-umbrella.h
文件中自动导入Objective-C的.h文件
三、导入外部的 Frameworks
Language | Import into Swift | Import Into Objective-C |
---|---|---|
Any language framework | import FrameworkName | @import FrameworkName; |
四、注意事项
- 需要混编的Swift类需继承自NSObject或NSObject的子类,并使用
public
加以声明,否则ProductName-Swift.h
中不会自动生成对应的声明; - 需要混编的Swift类的属性或方法需同时用
@objc、public
修饰,否则ProductName-Swift.h
中不会自动生成对应的声明。
参考:
1、Swift 与 Objective-C 混编