Dav*_*vid 4 macos xcode objective-c key-value-observing key-value-coding
我正在尝试通过代码监视NSMutableArray以进行更改.我想在数组更改时添加一个观察者,但是我没有看到NotificationName应该是什么来实现这一点.
基本上,当修改数组时,我想执行自定义选择器.
我不是100%,但我很确定Key-Value Observing就是你想要的.
无论关心数组的对象是什么,都将自己注册为观察者:
[objectWithArray addObserver:self
forKeyPath:@"theArray"
options:NSKeyValueObservingOptionNew
context:nil];
Run Code Online (Sandbox Code Playgroud)
然后它会收到数组已更改的通知:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
NSLog(@"Change is good: %@", [change objectForKey:NSKeyValueChangeNewKey]);
}
Run Code Online (Sandbox Code Playgroud)
请注意,这一方法将收集此对象已注册的所有观察结果.如果您注册相同的对象以观察许多不同的键,则在调用此方法时,您可能必须区分它们; 这是keyPath和object论点的目的.
问题,以及我不确定这是否适合您的原因是,这假定数组在您的代码中,因为您需要对它进行包装以便发送通知.
[self willChangeValueForKey:@"theArray"];
[theArray addObject:...];
[self didChangeValueForKey:@"theArray"];
Run Code Online (Sandbox Code Playgroud)
任意框架类将具有一些属性,并且一些属性不符合Key-Value Observing.例如,NSWindow的firstResponder 是国际志愿者组织兼容的,但它childWindows不是.当然,文档会告诉你哪些是哪些.
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |