我有一个c ++类需要使用指向该方法的指针来调用目标c方法。此方法返回void并接受类型为“status”的参数,其中status是一个简单的整数枚举。
enum status
{
status_valid = 0,
status_invalid,
status_unknown
};
我有像这样设置的obj-c方法的指针。指向该方法的指针也被传递给c ++类和
typedef void (*FuncPtr) (status);
FuncPtr myObjCSelectorPointer = (void (*)(status))[self methodForSelector:@selector(statusChanged: )];
cppClassInstance->setFuncPointer(myObjCSelectorPointer)
mybbCSelectorPointer由cppClass保留,如下所示:
void cppClass::setFuncPointer(FunctPtr *ptr)
{
this->funcPtr = ptr;
}
现在在其他地方,当我尝试调用此指针指向的方法时,如下所示:
status s;
funcPtr(s);
正确调用该方法,但传递给方法的值将丢失。 obj-c方法接收完全随机的值。当我尝试使用相同的方式在cpp类中调用方法时,它传递并接收正确的值。
我做错了什么?你能不能像这样调用客观的c方法吗?