在自定义 Swift 框架中的 Objective-C 文件上使用 Swift
Posted
技术标签:
【中文标题】在自定义 Swift 框架中的 Objective-C 文件上使用 Swift【英文标题】:Using Swift on Objective-C file in custom Swift framework 【发布时间】:2018-07-17 03:57:55 【问题描述】:我想使用 Swift 创建一个自定义框架。框架中有一些 Swift 文件,然后我创建一个名为 A(A.h 和 A.m)的新 Objective-C 文件。
在这个 Objective-C 文件中,我想使用另一个 Swift 类,所以我在 A.m 文件的顶部添加了以下导入语句
#import "<My framework target name>-Swift.h"
在构建框架时,我收到错误提示“-Swift.h”未找到。
我尝试了一些解决方案,但仍然卡住了
我添加了一个桥接头文件,但由于自定义框架不允许桥接头而失败。 我在 Build Settings 上将“Defines Module”设为 YES,但似乎没用。将 '$(CONFIGURATION_TEMP_DIR)/Product Name With Spaces.build/DerivedSources' 添加到标题搜索路径没有帮助。(关注此线程 ios - 'MyProject-Swift.h' file not found when running Unit Tests for Swift ,@gagarwal 的答案)
我也尝试将import语句移动到伞头,但出现同样的错误。
如何在 Objective-C 文件中使用 Swift 类?
【问题讨论】:
【参考方案1】:#import 语句的格式是在应用程序目标的 Objective-C 文件中包含桥接头的方式。
在框架目标内的 Objective-C 文件中,要导入 Swift 接口,您的导入语句需要如下所示:
#import <FrameworkProductName/FrameworkProductModuleName-Swift.h>
另外,请记住,在框架目标中,除了必要的@objc 之外,您还必须创建希望从 Swift public 或 open 访问的类和属性.
【讨论】:
以上是关于在自定义 Swift 框架中的 Objective-C 文件上使用 Swift的主要内容,如果未能解决你的问题,请参考以下文章
混合objective-c项目中的Swift“命名空间”不起作用
线程1:自定义框架Swift中Reachability框架中的signal SIGABRT
如何在同一框架内访问 Objective-C 中的内部 Swift 类?
使用 Objective-C 框架构建 Swift 项目时出现“架构 arm64 的未定义符号”错误