【发布时间】:2008-11-25 10:03:58
【问题描述】:
我在 Objective-C 类中有一个方法。它有 2 个用 C 编写的回调函数。类指针,即self,作为void * 传递给这些函数。在 C 函数中,我创建了一个 class 类型的指针并分配了 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);
【问题讨论】:
-
如果您可以编辑以添加显示您正在尝试执行的操作的代码,这将更容易提供帮助。
标签: objective-c cocoa