I have created 2 callback functions in Obj-C, first callback function works fine but 2nd callback function generating problem.
Please help whats going wrong?
For example:
cb = IOServiceAddMatchingNotification(notifyPort, firstMatchNotification,
matchingDict, RawDeviceAdded, NULL,
&gRawAddedIter);
RawDeviceAdded(NULL, gRawAddedIter, self);
This works fine. But below function receives self as nil.
cb = IOServiceAddMatchingNotification(notifyPort, firstMatchNotification,
matchingDict,BulkTestDeviceAdded,NULL,
&gBulkTestAddedIter);BulkTestDeviceAdded(NULL, gBulkTestAddedIter, self);
Tarun Kumar
14-Oct-2015I am guessing that you are using a common method to handle callback functions, it’s a static function that forwards your instance using callback.
Ok, here I try to solve your problem, I think it’s useful for you, here is the code:
static RawDeviceAdded(void* refcon, io_iterator_t iterator) {[(MyClass*)refcon rawDeviceAdded:iterator];
}
@implementation MyClass
- (void)setupCallbacks {
// ... all preceding setup snipped
cb = IOServiceAddMatchingNotification(notifyPort,firstMatchNotification, matchingDict, RawDeviceAdded, (void*)self, &gRawAddedIter );
// call the callback method once to 'arm' the iterator
[self rawDeviceAdded:gRawAddedIterator];
}
- (void)rawDeviceAdded:(io_iterator_t)iterator {
// take care of the iterator here, making sure to complete iteration to re-arm it
}
@end