2017-09-01 86 views
0

我有一個關於Swift函數參數語法的問題。如何將函數參數從Obejctive-C轉換爲Swift?

我想通過從庫C基於回調函數來獲得信息,所以我就與Objective-C的功能如下:

void foo(char *arg) { 
    NSLog(@"%s", log); 
} 

然後,我註冊fooMainController接口的Objective-C這樣的。

typedef void (*CB)(char *); 
void addFoo(CB func); 
... 
addFoo(&foo); 

上面的代碼是一個簡化的表示,但它很好地打印了圖書館的日誌。現在,我不得不將語言從Objective-C改爲Swift。大部分源代碼已經改變,但對於上述功能,日誌不能正常輸出。

我該如何更改?

請幫忙。

回答

0

我試圖直接轉換。這是代碼。

typealias CB = (String) -> Void 
func addCB(cd: CB) { 
    // ... 
} 
func foo(pa: String) { 
    // ... 
} 
var fooFuc: CB = foo(pa:) 
addCB(cd: fooFuc) 
+0

我想維護使用'char *',因爲庫只允許使用該類型。如果我更改爲'String',它會自動投射嗎? – Kae10

+0

我不認爲你需要'(pa:)'在倒數第二行? – Sweeper

+0

@ Kae10不,你只能在Swift中使用'CChar'。 – Lumialxk