У меня есть метод в классе Objective-C. Он имеет 2 функции обратного вызова, написанные на C. Указатель класса, т.е. self
, передается этим функциям как void *
. В функциях C я создаю указатель типа class и назначаю параметр void *
.
Первая функция обратного вызова выполняется успешно. Но указатель void *
становится nil
во второй функции обратного вызова. Обратите внимание, что я не настроил указатель в первом обратном вызове, но все равно получаю nil
во втором обратном вызове.
Есть идеи, что может пойти не так?
Например:
kr = IOServiceAddMatchingNotification(gNotifyPort, kIOFirstMatchNotification,
matchingDict, RawDeviceAdded, NULL,
&gRawAddedIter);
RawDeviceAdded(NULL, gRawAddedIter, self);
Это отлично работает. Но ниже функция получает self
как nil
.
kr = IOServiceAddMatchingNotification(gNotifyPort, kIOFirstMatchNotification,
matchingDict, BulkTestDeviceAdded, NULL,
&gBulkTestAddedIter);
BulkTestDeviceAdded(NULL, gBulkTestAddedIter, self);