在框架内将Swift文件暴露给Objective-C

时间:2015-01-01 17:07:20

标签: ios objective-c xcode swift

我有一个包含Swift和Objective-C的框架。我在Objective-C类#import "MyFrameworkHeader.h"的顶部有声明,我认为它会将我的swift代码暴露给我的Objective-C类但是编译器仍然说这些符号不存在,我怎么能暴露我的Swift在同一个Framework中我的Objective-C类的类?

3 个答案:

答案 0 :(得分:7)

呃,打了几个小时后,我终于发布了这个问题,几分钟后我找到了答案:

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

标题下:"将Swift导入Objective-C"

答案 1 :(得分:2)

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

之后设置只需进入你的文件并输入#import" -Swift.h"。我不认为您可以使用swift和Objective-C导入单个文件,您可以一次导入所有swift文件。确保所有swift文件都没有错误或者您将收到有关此标头未定义的错误,这一点非常重要。您可能必须构建项目而没有错误,文件至少生成一次。

答案 2 :(得分:0)

我认为您正在寻找的是 Bridging Header 。 这是一个将Objective-C标头导入到Swift中的文件。

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

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

  • 使用File>制作您自己的空文件新文件(Cmd + N)>来源>头文件。无论如何都要调用它,然后像上一个一样导入文件。在它工作之前,您必须在项目设置的字段中输入桥接头文件的名称(在第一个选项中,Xcode将为您执行此操作)。