Tratamento de retornos de chamada
Eu tenho um método em uma classe de objetivo-C. Possui 2 funções de retorno de chamada escritas em C. O ponteiro de classe, ou seja,self
é passado para essas funções comovoid *
. Nas funções C, crio um ponteiro do tipo classe e atribuo ovoid *
parâmetro. A primeira função de retorno de chamada é executada com sucesso. Mas ovoid *
ponteiro se tornanil
na segunda função de retorno de chamada. Observe que não alterei o ponteiro no primeiro retorno de chamada, mas ainda assim recebonil
no segundo retorno de chamada.
Alguma idéia do que pode estar errado?
Por exemplo:
kr = IOServiceAddMatchingNotification(gNotifyPort, kIOFirstMatchNotification,
matchingDict, RawDeviceAdded, NULL,
&gRawAddedIter);
RawDeviceAdded(NULL, gRawAddedIter, self);
Isso funciona bem. Mas a função abaixo recebeself
Comonil
.
kr = IOServiceAddMatchingNotification(gNotifyPort, kIOFirstMatchNotification,
matchingDict, BulkTestDeviceAdded, NULL,
&gBulkTestAddedIter);
BulkTestDeviceAdded(NULL, gBulkTestAddedIter, self);