繁体   English   中英

使用Swift中的块调用Objective C方法

[英]Call Objective C method with blocks from Swift

我正在使用他们的MatrixKit框架将Matrix消息传递实现到我的iOS应用中,该框架是通过Cocoapods添加到项目中的。 除了最后一个问题,我一切正常:我的Swift文件中未识别出其中一种提供的方法。 MXSession.h文件列出了一个方法:

- (void)start:(void (^)(void))onServerSyncDone
  failure:(void (^)(NSError *error))failure NS_REFINED_FOR_SWIFT;

用于启动MXSession。 我需要从我的Swift类中调用此方法,但我尝试遵循以下方法无济于事:

session.start({
   //success 
}, failure: {
   //failure   
})

编译器抱怨说Value of type 'MXSession' has no member 'start'显然Value of type 'MXSession' has no member 'start' 另外,奇怪的是,我能够访问MXSession中的其他方法,例如:

- (void)resume:(void (^)(void))resumeDone;

下列:

session.resume {
    //resumed successfully
}

完美地工作。 我对快速关闭不太满意,我只是在犯语法错误吗? 我已经尝试了所有方法,但似乎无法使其正常工作。

好吧,当然,我在发布此问题的那一刻就解决了它。 显然, NS_REFINED_FOR_SWIFT宏在方法的开头附加了两个下划线,以便快速使用。 以下代码编译:

session.__start({
    //success
}, failure: { error in
    //failure
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM