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);

questionAnswers(3)

yourAnswerToTheQuestion