Я хочу установить нечто подобное в своей среде.
[[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.