CALL BACK FUNTION HANDLING

monica frank

Total Post:10

Points:70
Posted by  monica frank
 795  View(s)
Ratings:
Rate this:

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

  1. Tarun Kumar

    Post:214

    Points:1642
    Re: Call Back funtion handling

    I 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

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!