可可中的自动键值观察

时间:2009-08-20 15:42:05

标签: cocoa cocoa-bindings

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

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

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

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

[obj setName:@“Mystery”];

感谢您的反馈

1 个答案:

答案 0 :(得分:11)

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

注意到KVO必须离奇是Cocoa启蒙的重要一步。祝贺。

Key-Value Observing Implementation Details