在当下比较流行的MVVM设计模式中,需要一种双向绑定的机制,在数据模型发生改变时,将变化呈现在视图上。iOS开发过程中,基于KVO(Key Value Observing)即可实现这种model和view联动机制。
KVO是一种观察值模式,利用它可以很容易实现view和model的分离,当model的属性值改变时,作为观察值的视图组件就会触发特定的方法,在该方法中可以获取model改变的数值,从而更新UI。在NSObject类引入了一个名为NSKeyValueObserving的分类(category),因此所有的OC对象都可以使用KVO。
KVO中常用的方法
使用KVO时,以下几个方法是比较常用的。
- 模型对象注册指定KeyPath的监听方法,通常情况下,当模型对象的指定K也发生变化时,通知视图对象,ViewController中的模型对象添加。
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context;
- 视图对象的监听回调方法,在该方法中可以获取数据模型变化后的数据。视图类中重写该方法。
- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary<NSString*, id> *)change context:(nullable void *)context;
- 删除指定Key路径的监听器
- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(nullable void *)context;
使用KVO实现model和view联动步骤
- 创建数据模型对象,并且注册需要监听的KeyPath
- 在视图类中,实现监听回调方法,即当收到model对象指定KeyPath发生改变时,对UI进行更新。