我有一些问题需要理解,为什么在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/

10-12 14:30
查看更多