【发布时间】:2016-04-14 02:35:58
【问题描述】:
当您将 Swift 文件添加到 Objective-C 项目时,Xcode 将生成一个 Swift-to-ObjC 标头,如下所述:http://ericasadun.com/2014/08/21/swift-calling-swift-functions-from-objective-c/
没有这个头文件就不可能从 Objc-C 调用 Swift 代码。但是 Xcode 不会为我的框架目标自动生成此标头。
如果我创建了一个 Objective-C app 并将一个 Swift 文件放入其中,那么它会自动生成一个,所以我怀疑这是因为我正在构建一个框架而不是一个应用程序。没有它就无法使用 Obj-C 代码中的 Swift 代码。
我尝试使用为应用程序生成的那个(在重命名它并将其放入适当的 DerivedData 文件夹之后),但 Xcode 没有更新它,实际上它最终会删除它,所以手动创建或尝试维护它文件不可行。
如何让 Xcode 为框架目标生成此标头,以便我可以从我的 Obj-C 代码调用我的 Swift 代码?
请记住伙计们:问题是关于从 Obj-C 调用 Swift 而不是从 Swift 调用 Obj-C。
【问题讨论】:
-
你需要什么?桥接头还是生成的 Obj-C 接口?
-
我需要能够将 Swift 源文件添加到 Obj-C 框架并能够从 Obj-C 代码中调用 Swift 类。
-
你有什么问题?
-
没有生成 Swift 桥接头。如果没有 Swift 桥接头,就不可能从同一代码库中的 Obj-C 代码调用 Swift 代码。
-
有趣,我刚刚建立了一个测试项目,似乎有一个catch-22。除非我在 Swift 编译器构建设置中指定桥接头,否则 Xcode 不会生成“FrameworkName-Swift.h”文件,但如果我这样做,则会收到“不支持将桥接头与框架目标一起使用”的错误消息
标签: objective-c xcode swift