Как сделать батут от уведомления Cocoa к вызову указателя функции c?

Я хочу установить нечто подобное в своей среде.

[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self
    forKeyPath:[@"values." stringByAppendingString: @"MyPreference"]
    options:NSKeyValueObservingOptionNew
    context:NULL];

Я делаю это из среды Smalltalk. Конкретный Smalltalk может фактически управлять вышеупомянутым через функции времени выполнения objective-c. Проблема в том, что в качестве аргумента addObserver: используется "self". Из Smalltalk я могу создать указатель функции C, который будет действовать как обратный вызов в Smalltalk. Но он не может предложить свое представление о том, что такое объект, среде ObjectiveC.

Поэтому я пытаюсь выяснить, как сделать батут из какого-то объекта с соответствующим API, который вызовет выполнение созданного мной указателя функции. Я посмотрел на NSInvokation и его друзей, но ни один из них не используется для обхвата указателя функции C. И я не уверен, что они переведут addObserver:forKeyPath:options:context: для выполнения нужных действий.

Вопрос сводится к тому, как использовать существующие объекты Cocoa для регистрации ответа на уведомление, которое является выполнением указателя функции C, без компиляции нового кода objc.

5
задан beryllium 27 October 2011 в 08:43
поделиться