【问题标题】:How to convert function parameter from Obejctive-C to Swift?如何将函数参数从 Objective-C 转换为 Swift?
【发布时间】:2017-09-01 05:54:39
【问题描述】:

我对 Swift 中函数参数的语法有疑问。

我想通过基于C的回调函数从库中获取消息,所以我用Objective-C创建了一个函数如下:

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

然后,我像这样用 Objective-C 注册 fooMainController 接口。

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

上面的代码是一个简化的表示,但是它很好地打印了库的日志。

现在,我必须将语言从 Objective-C 更改为 Swift。大部分源码都改了,但是对于上面的功能,log没有正常输出。

我该如何改变?

请帮忙。

【问题讨论】:

    标签: ios swift callback


    【解决方案1】:

    我尝试直接转换。这是代码。

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

    【讨论】:

    • 我想保持使用char *,因为该库只允许使用该类型。如果我换成String,会不会自动投好?
    • 我认为倒数第二行不需要(pa: )
    • @Kae10 不行,你只能在 Swift 中使用CChar
    • CCharCharacter 有什么不同? [CChar]char * 的语法是否正确?
    • @Kae10 在swift中,CChar用于C字符。
    猜你喜欢
    • 2020-07-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多