2017-09-01 81 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