如何实现C++函数到SWIFT的回调
我尝试在cpp类中执行一些操作,并在执行函数时返回对swift的回调 所以我做了这些事情: 在callbackClass.cpp中创建此函数 而对于header.h : 在Swift端记录回调之前,一切都很好: 但当你尝试做其他事情时,比如:如何实现C++函数到SWIFT的回调,c++,ios,swift,callback,C++,Ios,Swift,Callback,我尝试在cpp类中执行一些操作,并在执行函数时返回对swift的回调 所以我做了这些事情: 在callbackClass.cpp中创建此函数 而对于header.h : 在Swift端记录回调之前,一切都很好: 但当你尝试做其他事情时,比如: func callbackFunc(){ var value : String! callback({valueFromCallback in //call cpp function value = String(valueFro
func callbackFunc(){
var value : String!
callback({valueFromCallback in //call cpp function
value = String(valueFromCallback) //It has a problem
})
}
Xcode返回此错误:
无法从捕获上下文的闭包中形成C函数指针
我已经看到了这些问题,但没有帮助:
最后我意识到有可能把“闭包”作为C++ < /p>传递给C++。 因此,首先我在Swift类中创建了一个闭包:
typealias closureCallback = (Int32) -> ()
然后将其传递给cpp侧:
在页眉中.h
在callbackClass.hpp中:
在callbackClass.cpp中
这解决了一个我已经挣扎了几天的问题,它令人惊讶地直截了当。谢谢大家!@DavidSpry Yw,如果你发现一个答案是正确的,你可以投票支持这个答案而不是感谢它
int callback(void (*callback)(int));
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
})
}
typealias closureCallback = (Int32) -> ()
int callback(void (^closureCallback)(int));
class callbackClass.hpp
{
.
.
.
public:
int run(void (^closureCallback)(int));
};
#endif
int callback::run(void (^closureCallback)(int))
{
for (unsigned int i = 0; i < 100; i++)
{
closureCallback(i);
}
return 0;
}
typealias closureCallback = (Int32) -> ()
func callbackFunc(){
var value : String!
let closureValue: closureCallback = {valueFromclosureCallback in
value = String(valueFromclosureCallback)
}
callback(closureValue) //call cpp function
}