我对 Objective-C 中的 KVO 有点困惑。如果我的属性符合 KVO,我是否有两种选择来发出通知:1.addObserver:.../observeValueForKeyPath:...和 2. did/willChangeValueForKey...,还是我们应该did/willChangeValueForKey在特定上下文中使用这些方法?
我注意到第二个 ( did...) 可用于将多个更改分组到单个通知中;关于这两种方式还有其他重要的事情需要了解吗?第一种方法 ( addObserver:...) 是否无法在某些上下文中使用(尽管上下文符合 KVO)?
编辑:在 NSManagedObject 的子类中,只 did/willChangeValueForKey...使用了,但没有使用addObserver:.../observeValueForKeyPath:...:你知道为什么吗?