Автоматическое наблюдение значения ключа в какао - PullRequest
4 голосов
/ 20 августа 2009

Когда я узнаю больше о KVO и KVC, мне стало любопытно -

Как NSObject обеспечивает автоматическое KVO при доступе к методам установки?

Если я создаю новый объект с аксессором с именем setName,

как наблюдатель получает уведомление, когда кто-то звонит

[obj setName: @ "Mystery"];

Спасибо за любые отзывы

1 Ответ

11 голосов
/ 20 августа 2009

Я всегда объясняю людям, что «в Какао нет ничего волшебного, это всего лишь код». Но КВО граничит с магией. Это называется Isa-Swizzling. Ваш класс преобразуется во время выполнения (когда кто-то первый наблюдает за вами) в динамически генерируемый подкласс, который перегружает все методы получения и установки. Вызовы -class направлены на то, чтобы лгать вам и возвращать старый класс, поэтому вы не увидите магические подклассы, кроме отладчика, если посмотрите прямо на указатель isa.

Замечание, что КВО должно быть странным, является важным шагом в просвещении Какао. Поздравляю.

Детали реализации наблюдения значения ключа

...