В конце концов я понял, что можно передать 'closure' в c ++ в качестве аргумента
Итак, сначала я создаю класс Closure в Swift:
typealias closureCallback = (Int32) -> ()
Затем передал его стороне cpp:
В header.h
int callback(void (^closureCallback)(int));
В callbackClass.hpp
:
class callbackClass.hpp
{
.
.
.
public:
int run(void (^closureCallback)(int));
};
#endif
А в callbackClass.cpp
int callback::run(void (^closureCallback)(int))
{
for (unsigned int i = 0; i < 100; i++)
{
closureCallback(i);
}
return 0;
}
Наконец обработайте его в Swift:
typealias closureCallback = (Int32) -> ()
func callbackFunc(){
var value : String!
let closureValue: closureCallback = {valueFromclosureCallback in
value = String(valueFromclosureCallback)
}
callback(closureValue) //call cpp function
}