我正在為 swift 應用程式構建一個客觀的 C 框架。我正在嘗試通過匯入的目標 C 頭檔案在 swift 中使用一個函式。
interface MyApi : NSObject
(void)init:(NSDictionary *)launchOptions;
@end
@implementation MyApi
(void)init:(NSDictionary *)launchOptions {
...
}
@end
這些是 obj C 中的 .h 和 .m 檔案。在 swift 中,我試影像這樣呼叫函式:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
MyApi.init(launchOptions)
return true
}
但是我不斷收到錯誤訊息:傳遞給不帶任何引數的呼叫的引數
在我呼叫函式的那一行。有什么想法嗎?
uj5u.com熱心網友回復:
此語法:
MyApi.init(launchOptions)
呼叫初始化器的MyApi。請注意,這init是 Swift 中的關鍵字,具有特殊含義!由于MyApi繼承自NSObject,它繼承了無引數初始化程式,這就是 Swift 編譯器認為您試圖呼叫的內容。這與:
MyApi(launchOptions)
但是,您init在 Objective-C 中的方法不是MyApi物件的初始化程式,是嗎?它只是一個名為init. 要在 Swift 中呼叫它,您必須init通過在其周圍添加反引號來逃避關鍵字的特殊含義:
MyApi.`init`(launchOptions)
反引號非常驚人,因此我建議您將其重命名init為其他名稱,例如setup.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/378208.html
