Objective-c KVO:object vs changeDictionary
Posted
技术标签:
【中文标题】Objective-c KVO:object vs changeDictionary【英文标题】:Objective-c KVO: object vs changeDictionary 【发布时间】:2012-01-26 22:27:57 【问题描述】:我在 ios 应用程序中使用 KVO 在对象的属性发生更改时通知 viewController。当我添加观察者时,我指定options:NSKeyValueObservingOptionNew
。
在observeValueForKeyPath
中,我可以通过两种方式获取属性的值:从传递给observeValueForKeyPath
的对象中获取。或者来自传递给同一方法的NSDictionary
。
这两种获取更新属性值的方法是否总是返回相同的结果?
回想一下,我在添加观察者时将NSKeyValueObservingOptionNew
指定为选项。从Apple's docs 看来,指定NSKeyValueObservingOptionInitial
可能会产生差异。
【问题讨论】:
【参考方案1】:在常见的情况下,是的,这些对象应该是相同的,尽管可以设计一个它们不是的场景(即,在每次调用时生成新值的自定义 getter,或类似的东西。 ) NSKeyValueObservingOptionInitial
不会对该字典的内容产生任何影响,它只是确定是否立即通知观察者,还是在添加观察者后等待第一个值更改。如果您需要观察者中的某些状态被“启动”,这将非常有用。
【讨论】:
以上是关于Objective-c KVO:object vs changeDictionary的主要内容,如果未能解决你的问题,请参考以下文章