Swift 与 Objective-C 混编
作者:
小_夭 | 来源:发表于
2020-01-13 17:23 被阅读0次
一、同一个 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的,如下图)
设置Objective-C类的.h文件为public.png
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 混编
本文标题:Swift 与 Objective-C 混编
本文链接:https://www.haomeiwen.com/subject/anrsactx.html
网友评论