在框架内将 Swift 文件公开到 Objective-C

Expose Swift Files to Objective-C within Framework

我有一个包含 Swift 和 Objective-C 的框架。我在 Objective-C class #import "MyFrameworkHeader.h" 的顶部有声明,我认为这会将我的 swift 代码暴露给我的 Objective-C class 然而编译器仍然说符号不存在,我如何在同一框架内将我的 Swift classes 暴露给我的 Objective-C classes?

呃,磕了几个小时的脑袋终于发了这个问题,几分钟后我找到了答案:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_82

下header:"Importing Swift into Objective-C"

要让 Objective-C 注册您的 swift 代码,您应该进入构建设置,然后 see/set 您的项目名称,同时查看兼容性 header 选项检查为是。

设置完成后,只需进入您的文件并输入#import "-Swift.h"。我不认为您可以使用 swift 和 Objective-C 导入单个文件,您可以一次导入所有 swift 文件。请务必确保所有 swift 文件都没有错误,否则您将收到有关 header 未定义的错误消息。您可能必须在没有错误的情况下构建项目,文件才能至少生成一次。

我认为您正在寻找的是 桥接 Header。 这是您将 Objective-C header 导入到 Swift.

中的文件

有两种制作方法(据我所知):

  • 在我看来,最简单的方法是将现有 Obj-C 文件添加到您的 swift 项目,或 vice-versa。 Xcode 应该问你是否要自动配置桥接 header。选择是,Xcode 应该会创建一个名为 'project name'-bridging-header.h 的文件。在此文件中,导入您的文件,因此 #import "MyFrameworkHeader.h" 应该这样做。

  • 使用文件 > 新建文件 (Cmd+N) > 源 > Header 文件创建你自己的空文件。随便叫它什么,然后像上一个一样导入你的文件。在它起作用之前,您必须将桥接 header 文件的名称输入到项目设置中的一个字段中(在第一个选项中,Xcode 会为您完成)。