Jos*_*hua 13 parameters cocoa objective-c key-value-observing
我想知道这个方法的参数会返回什么.
- (void) observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context;
Run Code Online (Sandbox Code Playgroud)
在文档中说
keyPath相对于对象的键路径,已更改的值.
object key path keyPath的源对象.
change一个字典,描述对关键路径keyPath的属性值所做的更改相对于object.
context注册接收器以接收键值观察通知时提供的值.
您能否为我解释这些参数,因为我发现文档有点难以理解.
nal*_*all 13
注册KVO通知时,您指定了一个密钥路径addObserver:
.keypath参数只是返回给您的值.object参数是您向其发送addObserver:
消息的对象.这些可用于区分不同键路径/对象的KVO通知(例如,如果您正在观察多个值).
change
是一个字典,其中包含有关值更改性质的信息.它可能包含新值或旧值,或者对于多对多关系,它可能包含已更改的索引.其内容在" 接收更改通知"部分的" KVO编程指南"中有更好的描述.
注册通知时,您还可以指定上下文值.最后一个值就是返回给您的这个值.如果您没有任何特定于上下文的信息,则传递nil addObserver:
是合适的.
有关KVO系统(以及一些辅助类来解决它们)的一些缺点的讨论,请参阅Mike Ash的精彩博文