对于iOS开发者而言,iOS常用设计模式大家最喜欢的就是通知设计模式,但是通知模式有个很烦人的通病,那就是不好管理。所以在开发中一般能不用通知尽量不用通知。所以在通知和KVO之间我还是选择用后者。
在实现KVO的时候,有个很重要的一点就是被观察者的一个被观察的属性改变时必须使用set方法。所有一般在调用改变该属性的时候千万要记住。
这是我在被观察对象中定义的要被观察的属性。
@property(nonatomic,assign)NSInteger currentPage;
//PS 在需要变动该值得时候用set方法
//错误事例 _currentPage = 1;
//正确事例 slef.currentPage = 1;
//观察属性的时候不需要带下划线,因为系统会自动帮忙寻找待下划线的currentPage
// 添加观察者
[被观察对象 addObserver:观察者 forKeyPath:@"currentPage" options:NSKeyValueObservingOptionNew context:nil];
// 观察者方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
// 在此方法中能获取被观察值得变化
NSInteger currentPage = [change[@"new"]integerValue];
// 实现自己想实现的方法
}