Objective-c KVO:object vs changeDictionary

时间:2012-01-26 22:27:58

标签: ios properties options key-value-observing

我在iOS应用程序中使用KVO在对象上的属性发生更改时通知viewController。当我addObserver时,我指定options:NSKeyValueObservingOptionNew

observeValueForKeyPath中,我可以通过两种方式获取属性的值:从传递给observeValueForKeyPath的对象。或者从传递给同一方法的NSDictionary开始。

获取更新属性值的这两种方法是否总会返回相同的结果?

回想一下,当我添加addObserver时,我将NSKeyValueObservingOptionNew指定为选项。从Apple's docs开始,听起来像指定NSKeyValueObservingOptionInitial可能会产生差异。

1 个答案:

答案 0 :(得分:1)

在常见的情况下,是的,这些对象应该是相同的,尽管可以设计它们不是的场景(即在每次调用时产生新值的自定义getter,或类似的东西)。 )NSKeyValueObservingOptionInitial不会对该字典的内容产生任何影响,它只是确定观察者是否立即得到通知而不是在添加观察者之后等待第一次值更改。如果你需要观察者中的某个状态被“启动”,这很有用。