coreTelephony.h中定义的函数是
void _CTServerConnectionRegisterForNotification(CTServerConnectionRef,void *,void(*callback)(void));
然后我试着调用这个函数
int x = 0; //placehoder for callback
_CTServerConnectionRegisterForNotification(conn,kCTCellMonitorUpdateNotification,&x);
它返回错误
不兼容的指针类型将int传递给coretelephony obj c中的void(*)(void)类型的参数
我错过了什么?
答案 0 :(得分:0)
这里,_CTServerConnectionRegisterForNotification()
的第三个参数是指向具有
void
返回类型在这种情况下,您无法传递int
的地址。这是错误的,会导致undefined behavior。
答案 1 :(得分:0)
_CTServerConnectionRegisterForNotification
的第三个参数是一个函数指针,并将指针传递给int
。即使您成功使用强制转换,稍后当连接需要通知您时,它会尝试使用您作为函数传递的值,并且因为它不是函数,您很可能会看到崩溃。
使用函数而不是int:
void callback()
{
}
然后在您当前的代码中:
_CTServerConnectionRegisterForNotification(conn,kCTCellMonitorUpdateNotification,&callback);