self.abserveStr =@"123";
[selfaddObserver:selfforKeyPath:@"abserveStr"options:NSKeyValueObservingOptionOldcontext:nil];
self.abserveStr =@"456";
self.abserveStr =@"789";
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
NSLog(@"~~~~%@",self.abserveStr);
for (NSString *keyin change) {
NSLog(@"--- %@: %@",key,[changeobjectForKey:key]);
}
}
- (void)dealloc
{
[self removeObserver:self forKeyPath:@"abserveStr"];
}
输出结果:
2017-09-05 10:02:56.481 DCLProject[1662:495473] ~~~~456
2017-09-05 10:02:56.481 DCLProject[1662:495473] --- kind: 1
2017-09-05 10:02:56.481 DCLProject[1662:495473] --- old: 123
2017-09-05 10:02:56.481 DCLProject[1662:495473] ~~~~789
2017-09-05 10:02:56.481 DCLProject[1662:495473] --- kind: 1
2017-09-05 10:02:56.481 DCLProject[1662:495473] --- old: 456
说明
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context;
observer:观察对象selfkeyPath:所观察的观察属性
options:NSKeyValueObservingOptionOld 可以参考输出
context:nil
记得在delloc中移除