gpt4 book ai didi

objective-c - "addObserver:"和 "didChangeValueForKey:"的用途相同吗?

转载 作者:行者123 更新时间:2023-12-03 16:58:40 27 4
gpt4 key购买 nike

我对 Objective-C 中的 KVO 有点困惑。如果我的属性符合 KVO 标准,我有两种选择来发出通知:1. addObserver:.../observeValueForKeyPath:... 和 2.did/willChangeValueForKey... ,或者我们应该在特定的上下文中使用方法did/willChangeValueForKey

我注意到第二个(did...)可用于将多个更改分组到单个通知中;关于这两种方式还有其他重要的事情需要理解吗?第一个方法 (addObserver:...) 是否无法在某些上下文中使用(尽管上下文符合 KVO)?

编辑:在 NSManagedObject 的子类中,只使用了 did/willChangeValueForKey... ,而不使用 addObserver:.../observeValueForKeyPath:... :你知道为什么吗?

最佳答案

这两对被双方用于 KVO 交互;它们根本不可互换。

addObserver:forKeyPath:options:context:observeValueForKeyPath:ofObject:change:context:客户端使用,客户端想做观察。

observeValueForKeyPath:ofObject:change:context: 本质上是一个回调;当被观察的(“provider”)对象使用另一组方法(各种 did/will changeValueFor...)。通知实际上是在那时通过 change 方法发出的。

关于objective-c - "addObserver:"和 "didChangeValueForKey:"的用途相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com