参考官方文档:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177-BCICJDHA
看这个概念老久了,迟迟没能真正的用到,今天总算是使用上了,回头来把方法补上。
大批大批的概念我就不赘述了,看官方最有效。三分步
1、保证要添加观察的类符合kvc
2、为属性添加观察者
//为table的image添加观察者 [[self imageView] addObserver:self forKeyPath:@"image" options:NSKeyValueObservingOptionOld context:NULL];
这里是对uitableviewcell的imageview属性进行观察,一旦imageview发生改变,则会通知self,去做相关的处理,传入的时imageview之前的值
3、对所接到的事件做处理
/** * @brief 图片变化时候的回调 */ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (object == [self imageView] && [keyPath isEqualToString:@"image"] && ([change objectForKey:NSKeyValueChangeOldKey] == nil || [change objectForKey:NSKeyValueChangeOldKey] == [NSNull null])) { [self setNeedsLayout]; } }
使用完之后与通知类似,需要移除observe。
[[self imageView] removeObserver:self forKeyPath:@"image"];
ok,其实真正比通知还要简单,之后就要看自己如何合理应用了。