簡體   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