我在swift项目中使用C第三方库,如何在swift中传递回调函数指针? 当我调用第三部分函数“register”时,我收到错误“无法调用.......”
感谢您帮助解决此问题
// file: MyClass.swift
class MyClass: Object {
init() {
typealias callbackPtr = CFunctionPointer<((CInt , UnsafePointer<Void>) -> Void)>
let selfObject = unsafeBitCast(self, UnsafePointer<Void>.self)
// call third-part function
register(callbackPtr, selfObject) //failure point is here
}
func greeting() {
println(“Hello…”)
}
}
// file: callBack.h
//
// Third-part Function
// register(void(*functionPtr)(number int, void *context) handler, void *context)
//
// Third-party callback function pointer
// typedef void (*functionPtr)(number int, void *context);
void callbackFunctionPointer(number int, void *context)
// file: callBack.m
void callbackFunctionPointer(number int, void *context) {
MyClass *myClass = (__bridge MyClass *)context;
[myClass greeting];
}
答案 0 :(得分:0)
使用register(&callbackPtr, selfObject)
传递指针而不是变量。 &
获取变量(或指针)的指针。