可可中的自动键值观察

Opt*_*key 4 cocoa cocoa-bindings

随着我对KVO和KVC的了解越来越多,我变得很好奇 -

在访问setter方法时,NSObject如何提供自动KVO?

如果我使用名为setName的访问器创建一个新对象,

当有人打电话时,观察者如何得到通知

[obj setName:@"Mystery"];

感谢您的任何反馈

Rob*_*ier 11

我总是向人们解释"Cocoa中没有什么是神奇的东西;它只是代码." 但KVO与魔术接壤.它被称为isa-swizzling.您的类在运行时(任何人第一次观察到您)转换为动态生成的子类,该子类重载所有getter和setter.调用-class是连接到你并返回旧类,因此除非在调试器中直接查看isa指针,否则你将看不到魔术子类.

注意到KVO必须离奇是Cocoa启蒙的重要一步.恭喜.

键值观察实现细节