J'ai une méthode dans une classe d'objectif-C. Il a 2 fonctions de rappel écrites en C. Le pointeur de classe, c'est-à-dire self
, est passé à ces fonctions sous la forme void *
. Dans les fonctions C, je crée un pointeur de type classe et affecte le paramètre void *
. La première fonction de rappel s'exécute avec succès. Mais le pointeur void *
devient nil
dans la 2ème fonction de rappel. Notez que je n'ai pas modifié le pointeur dans le premier rappel mais je reçois toujours le nil
dans le 2ème rappel.Traitement des rappels
Des idées sur ce qui pourrait mal tourner?
Par exemple:
kr = IOServiceAddMatchingNotification(gNotifyPort, kIOFirstMatchNotification,
matchingDict, RawDeviceAdded, NULL,
&gRawAddedIter);
RawDeviceAdded(NULL, gRawAddedIter, self);
Cela fonctionne très bien. Mais la fonction ci-dessous reçoit self
en tant que nil
.
kr = IOServiceAddMatchingNotification(gNotifyPort, kIOFirstMatchNotification,
matchingDict, BulkTestDeviceAdded, NULL,
&gBulkTestAddedIter);
BulkTestDeviceAdded(NULL, gBulkTestAddedIter, self);
Il sera plus facile de vous aider si vous pouvez éditer pour ajouter du code qui montre ce que vous essayez de faire. –