在Swift中使用Objective-C类
如果你要在应用程序目标中导入代码(混合Swift和Objective-C的项目),你应该使用bridging header
文件将Objective-C代码暴露给Swift代码。[在项目中混合Swift和Objective-C代码]
本文将介绍如何将Objective-C框架导入到Swift代码中。
Swift客户端-> Objective-C动态框架
Xcode版本10.2.1
创建Objective-C框架
创建一个框架项目或创建一个框架目标
File -> New -> Project... -> Cocoa Touch Framework
//or
Project editor -> Add a Target -> Cocoa Touch Framework
将生成两个文件:
Info.plist
- 构建设置 -> Info.plist 文件
<product_name>.h
- 构建阶段 -> 标头
。这是一个包含所有公开接口的总头文件,供使用者引用[关于]
将所有 .h
文件添加到这个总头文件(<product_name>.h)中
#import "header_1.h"
#import "header_2.h"
添加实现文件
.m
Select `.m` file -> Select File Inspectors Tab -> Target Membership -> Select the target
//or
Project editor -> select a target -> Build Phases -> Compile Sources -> add files
添加在公共区域中 <product_name>.h
中列出的头文件 .h
(header_1.h
,header_2.h
)[无法完成] [公共目标成员资格]
Select `.h` file -> Select File Inspectors Tab -> Target Membership -> Select the target and make it **public**
//or
Project editor -> select a target -> Build Phases -> Headers -> add files to the **public** zone
构建框架 -
⌘ Command +
B或
产品 -> 构建
注意:确保您为与客户端代码相同的进程架构构建框架。
查找生成的输出
[生成位置]
Products group -> <product_name>.framework -> Show in Finder
该框架包括:
Info.plist
Modules
文件夹,其中包含:
module.modulemap
[关于] [自定义modulemap]此文件的生成是因为构建设置 -> 定义模块 -> 是
Headers
文件夹,其中包含:
Headers
部分中的文件。这里是公共接口/定义
使用Objective-C框架的Swift消费者
拖放
二进制文件到Xcode项目[关于]
嵌入二进制文件
[未加载库] [链接 vs 嵌入]
Project editor -> select a target -> General -> Embedded Binaries -> path to `<product_name>.framework` file
我将自动将框架添加到以下位置:
项目编辑器 -> 选择目标 -> 常规 -> 链接的框架和库
项目编辑器 -> 选择目标 -> 构建阶段 -> 嵌入式框架
项目编辑器 -> 选择目标 -> 构建阶段 -> 链接二进制文件
添加
Framework Search paths(FRAMEWORK_SEARCH_PATHS)
[模块未找到] [递归路径]。
Project editor -> select a target -> Build Settings -> Search Paths -> Framework Search paths -> add path to the parent of `<product_name>.framework` file
将模块导入到Swift客户端代码中[模块名称]
import module_name
这里有更多的示例