У меня есть метод в объективном классе C. Он имеет 2 функции обратного вызова, записанных на C. Указатель класса, то есть self
, передается этим функциям как void *
. В C-функциях я создаю указатель типа type и назначаю параметр 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);
Будет легче помочь, если вы можете редактировать, чтобы добавить код, который показывает, что вы пытаетесь сделать. – 2008-11-25 10:17:18