我有一些问题需要理解,为什么在Swift中没有来自导入的(和复杂的)Objective-C接口集的某些成员函数。
我有一个桥接头文件:
#import "EvernoteSDK.h"
而且我无法在ViewController中使用某些成员函数
let userStore = EvernoteUserStore()
userStore.initWithSession(session)
initWithSession对快速代码不可用,但是为什么呢?
Objective-C标头显示:
@interface EvernoteUserStore : ENAPI
+ (instancetype)userStore;
- (id)initWithSession:(EvernoteSession *)session;
如果我可以查看公开的Objective-C标头,那么我可能会理解,改写是如何工作的
最佳答案
在Swift中,初始化程序调用与构造函数结合在一起。换句话说,Objective-C的
EvernoteUserStore *userStore = [[EvernoteUserStore alloc] initWithSession:session];
变成
let userStore = EvernoteUserStore(session:session);
该工具识别Objective-C的
initWithSomething:
名称,并将其转换为init(something something : SomeType)
如果是
EvernoteUserStore
,则相应的init
方法如下所示:init(session session: EvernoteSession!)
关于ios - 我有一种方法可以快速查看公开的Objective-C header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24218811/