我使用带有静态回调方法的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能够捕捉和处理的事件或信号?
答案 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)