Я хочу настроить что-то подобное в моей среде.
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self
forKeyPath:[@"values." stringByAppendingString: @"MyPreference"]
options:NSKeyValueObservingOptionNew
context:NULL];
Я делаю это из среды Smalltalk. Конкретный Smalltalk может фактически управлять вышеупомянутыми функциями во время выполнения target-c. Проблема в том, что «я» есть аргумент addObserver:
. Из Smalltalk я могу создать указатель на функцию C, который будет выполнять функцию обратного вызова в Smalltalk. Но он не может предложить понятие о том, что представляет собой Объект для среды ObjectiveC.
Итак, я пытаюсь понять, как батутить из какого-то объекта с помощью соответствующего API, который вызывает выполнение указателя функции, который я создаю. Я посмотрел на NSInvokation
и друзей, но ни один из них не используется, чтобы обернуть указатель на функцию C. И я не уверен, что они переведут addObserver:forKeyPath:options:context:
, чтобы поступить правильно.
Суть вопроса в том, как использовать существующие объекты Какао для регистрации ответа на Уведомление, являющееся выполнением указателя на функцию C, без компиляции какого-либо нового кода objc.