Функция, определенная в coreTelephony.h:
void _CTServerConnectionRegisterForNotification(CTServerConnectionRef,void *,void(*callback)(void));
Тогда я попытался вызвать эту функцию
int x = 0; //placehoder for callback
_CTServerConnectionRegisterForNotification(conn,kCTCellMonitorUpdateNotification,&x);
это возвращает ошибку
несовместимый тип указателя, передающий int параметру типа void (*) (void) в coretelephony obj c
Что мне не хватает?
Третий аргумент _CTServerConnectionRegisterForNotification
указатель на функцию, и вы передаете указатель на int
, Даже если вам удалось сделать это с помощью приведения, позже, когда соединение должно уведомить вас, оно будет пытаться использовать значение, которое вы передали в качестве функции, и, поскольку это не функция, вы, скорее всего, увидите сбой.
Используйте функцию, а не int:
void callback()
{
}
а затем в вашем текущем коде:
_CTServerConnectionRegisterForNotification(conn,kCTCellMonitorUpdateNotification,&callback);
Здесь третий аргумент _CTServerConnectionRegisterForNotification()
должен быть указателем на функцию, имеющую
void
тип возвратаВы не можете передать адрес int
в таком случае. Это неправильно и приведет к неопределенное поведение.