扔在Swift可以捕获的C中的事件

时间:2015-11-17 13:07:07

标签: ios c swift

我使用带有静态回调方法的C代码的静态库。指向该方法的指针将分配给变量。每次库调用此函数时,我都需要使用swift处理此事件。一个最小的例子是:

static void onEventXYZ(int x, int y, struct z);

int anFunction(){
    libraryFile.attribute = &onEventXYZ;
}


//a C callback function
static void onEventXYZ(int x, int y, struct z){
    //function body
}

我的问题在于我不知道如何在swift类中对这样的回调作出反应。值得一提的是,当应用程序可能处于后台时,我还需要对此回调作出反应。

是否可以抛出swift能够捕捉和处理的事件或信号?

1 个答案:

答案 0 :(得分:0)

假设你有一个函数指向该回调函数......

void doSomething(void (*callback)(int, int)); // int parameters just for example

......它被翻译成Swift如下:

func doSomething(callback: @convention(c) (Int, Int) -> Void)

这意味着您可以将任何功能用作回调,只要它与@convention(c)标准兼容:

doSomething {
    print($0)
    print($1)
}

// or

func onSomething(i: Int, j: Int) {
    print(i)
    print(j)
}

doSomething(onSomething)

// or

let onSomething: (Int, Int) -> Void = { i, j in
    print(i)
    print(j)
}

doSomething(onSomething)