将Swift文件添加到Objective-C项目时,Xcode会生成Swift-to-ObjC标头,如下所述:http ://ericasadun.com/2014/08/21/swift-calling-swift-functions-来自目标c /
如果没有此标头,则无法从Objc-C调用Swift代码。但是,Xcode不会为我的框架目标自动生成此标头。
如果我创建一个Objective-C应用程序并将一个Swift文件放入其中,那么它会自动生成一个,因此我怀疑这是因为我在构建框架而不是应用程序。没有它,就不可能使用Obj-C代码中的Swift代码。
我尝试使用为应用程序生成的文件(将其重命名并放入适当的DerivedData文件夹后),但Xcode并未对其进行更新,实际上它最终会删除它,因此手动创建或尝试维护该文件不是可行的。
如何使Xcode为框架目标生成此标头,以便可以从Obj-C代码中调用Swift代码?
记住人们:问题是关于从Obj-C调用Swift,而不是从Swift调用Obj-C。
我创建了一个新的Framework项目,添加了Obj-C和Swift文件,并能够做到这一点:
// MyObjCClass.m
#import "MyObjCClass.h"
#import <MyFramework/MyFramework-Swift.h>
@implementation MyObjCClass
- (void)test {
[[MySwiftClass alloc] init];
}
@end
请注意,您的Swift类必须为public
:
public class MySwiftClass: NSObject {
// ...
}
有关更多信息,请参见Apple的Swift / Obj-C互操作文档,位于“将Swift导入到Objective-C中”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句