【发布时间】:2018-08-28 18:44:59
【问题描述】:
我尝试在 cpp 类中做一些事情,并且在执行函数时返回回调到 swift。
所以我做这些事情:
-
在
callbackClass.cpp中创建这个函数int callback::run(void (*callback)(int)) { for (unsigned int i = 0; i < 100; i++) { callback(i); } return 0; } -
在
callbackClass.hpp:class callbackClass.hpp { . . . public: int run(void (*callback)(int)); }; #endif -
对于
header.h:int callback(void (*callback)(int));
在Swift 端记录回调之前很好:
func callbackFunc(){
callback({valueFromCallback in //call cpp function
print(valueFromCallback) //Works fine
})
}
但是当尝试做其他事情时:
func callbackFunc(){
var value : String!
callback({valueFromCallback in //call cpp function
value = String(valueFromCallback) //It has a problem
})
}
Xcode 返回此错误:
不能从捕获上下文的闭包中形成 C 函数指针
我已经看过这些问题但没有帮助:
Swift: Pass data to a closure that captures context
How to cast self to UnsafeMutablePointer<Void> type in swift
A C function pointer cannot be formed from a closure that captures context
【问题讨论】: