Tengo un método en una clase de objetivo-C. Tiene 2 funciones de devolución de llamada escritas en C. El puntero de clase, es decir, self
se pasa a estas funciones como void *
. En las funciones C, creo un puntero de tipo clase y asigno el parámetro void *
. La primera función de devolución de llamada se ejecuta con éxito. Pero el puntero void *
se convierte en nil
en la segunda función de devolución de llamada. Tenga en cuenta que no he modificado el puntero en la primera devolución de llamada, pero igual recibo nil
en la segunda devolución de llamada.Manejo de devoluciones de llamada
¿Alguna idea de lo que podría estar yendo mal?
Por ejemplo:
kr = IOServiceAddMatchingNotification(gNotifyPort, kIOFirstMatchNotification,
matchingDict, RawDeviceAdded, NULL,
&gRawAddedIter);
RawDeviceAdded(NULL, gRawAddedIter, self);
Esto funciona bien. Pero debajo de la función recibe self
como nil
.
kr = IOServiceAddMatchingNotification(gNotifyPort, kIOFirstMatchNotification,
matchingDict, BulkTestDeviceAdded, NULL,
&gBulkTestAddedIter);
BulkTestDeviceAdded(NULL, gBulkTestAddedIter, self);
Será más fácil ayudar si puede editar para agregar código que muestra lo que está tratando de hacer. –