作为 Cocoa 和 Objective-C 的新手,我对 KVC 和 KVO 有一个初步的了解。然而,关于 Cocoa Bindings(如标题为“Cocoa Bindings Programming Topics”的 Apple 文档中所述,参见图 8-10),我不清楚他们为什么同时使用 KVC 和 KVO 来描述,而 KVO 似乎就足够了。KVO 的 ObserveValueForKeyPath:ofObject:change:context 可以提供新旧值,那么为什么需要 KVC 机制呢?请注意,我看到了 KVO 如何解耦对象,但 KVC 也是如此。
Apple 给出的示例(图 8-10)描绘了一个包含滑块和文本输入控件的窗口,以直观地表示并允许用户交互设置和查看“温度”、控制器对象和具有温度属性的模型对象。所以换一种说法,我的问题是为什么不只是在两个控件和控制器之间建立双向 KVO 关系(每个都作为观察者注册另一个),以及模型对象和控制器之间的双向 KVO 关系?为什么需要 KVC?