Key-Value Observing如何在内部实施?

Eon*_*nil 7 cocoa internals key-value-observing foundation

我得到了关于这个问题的基础魔法的答案:实现符合键值观察的普通数据对象的最简单*方法是什么?

什么是魔术?它内部如何工作?因为使用我无法理解其内部行为的框架是危险的,所以我想知道它的行为.目前,如果没有任何方法定义,我无法理解它是如何工作的.

一二三*_*一二三 10

Apple的文档描述了如何在内部实施KVO.

它的要点是,当您在对象上注册观察者时,框架会动态创建对象原始类的子类,并调整对象以显示为此新动态类的实例.如果在注册了观察者之后检查调试器中的对象,则可以看到这一点.

这个新类拦截对象的消息,并检查它们是否匹配某些模式(例如getter,setter和collection访问).