KVO (key-value observing)的使用
1、给一个类([ZLUserManager sharedInstance_])添加一个观察者(Observer)为self(self为当前页面),监听[ZLUserManager sharedInstance_]中userInfo属性的变化(userInfo必须为类的对象,普通常量监监测不了),“NSKeyValueObservingOptionNew”为监听的选项,是更新数据
[[ZLUserManager sharedInstance_] addObserver:self forKeyPath:@"userInfo" options:NSKeyValueObservingOptionNew context:NULL];
2、当前页面中必须实现KVO的 方法,不实现会崩溃
observeValueForKeyPath:ofObject:change:context:.
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if([keyPath isEqualToString:@"userInfo"]) {
//更新页面信息.
self.userInfoModel = [ZLUserManager sharedInstance_].userInfo;
if (self.userInfoModel) {
self.tableView.tableHeaderView = [self tableViewHeaderView];
}
}
}
3、页面释放时,必须移除观察者,否则得不到释放
- (void)dealloc {
[[ZLUserManager sharedInstance_] removeObserver:self forKeyPath:@"userInfo"];
}