我在C中有一个非常简单的函数,它的指针传入Swift。从Swift调用C函数只知道内存地址
void callback() {
NSLog(@"such pointer…");
}
怎样才可以在斯威夫特使用ONLY指针调用?这是关于简单地调用它的不是 - 直接调用时它工作正常。试图与签名铸造以下和不同的变化,但它总是崩溃:
let pointer: UnsafePointer<@convention(c)() ->()> = UnsafePointer(bitPattern: …)
let callback: @convention(c)() ->() = pointer.memory
Swift.print(callback) // (Function)
callback() // Handling crash with signal 11...
试图定义Callback
型与typedef void(*Callback)();
- 同样的事情:
let pointer: UnsafePointer<Callback> = UnsafePointer(bitPattern: …)
let callback: Callback = pointer.memory
Swift.print(callback) // (Function)
callback() // Handling crash with signal 11...
要检查它的实际工作,并指向右方地址我有另一个Objective-C函数,它按照预期从Swift和回调指针调用时起作用。
void invokeCallback(uintptr_t callback) {
((void (*)()) callback)(); // such pointer…
}
你如何获得指针?它的定义/声明是什么? – Alexander