从observeValueForKeyPath参数:ofObject变化:背景:(Parameter

2019-09-01 06:42发布

我想从这个方法的参数将返回什么。

- (void) observeValueForKeyPath:(NSString *)keyPath
                       ofObject:(id)object
                         change:(NSDictionary *)change
                        context:(void *)context;

在文档 ,它说

的keyPath关键路径,相对于对象,以已改变的值。

对象中的关键路径的keyPath的源对象。

改变描述了已经作出的属性的值在关键路径的keyPath相对于到物体的变化的词典。

上下文当接收机被注册以接收键值观察通知这是所提供的值。

你能不能解释一下这些参数对我来说,因为我发现文档有点难以理解。

Answer 1:

当您注册KVO通知您指定的keyPath到addObserver: 该参数的keyPath仅仅是被退回给你这个值。 对象参数是你发送的对象addObserver:消息。 这些都可以使用(如果你观察多个值例如)不同keypaths /对象的志愿通知之间进行区分。

change是包含的值更改性质的信息的字典。 它可能包含新值或旧值,或者对于一对多的关系,它可能包含更改的指标。 其内容中更好地描述志愿编程指南 的变化部分的接收到通知

当您注册的通知,你也可以指定一个上下文值。 最后一个值是简单地返回给你这个值。 如果你没有任何具体的上下文信息,传递到零addObserver:是合适的。

有关国际志愿者组织系统的一些不足之处商量好了(和一些辅助类来解决这些问题),看到迈克灰的精彩的博客贴子



文章来源: Parameters from observeValueForKeyPath:ofObject:change:context: