IOS基础 通过KVO实现Model和View联动

2020-12-04  本文已影响0人  jonas_c

在当下比较流行的MVVM设计模式中,需要一种双向绑定的机制,在数据模型发生改变时,将变化呈现在视图上。iOS开发过程中,基于KVO(Key Value Observing)即可实现这种model和view联动机制。

KVO是一种观察值模式,利用它可以很容易实现view和model的分离,当model的属性值改变时,作为观察值的视图组件就会触发特定的方法,在该方法中可以获取model改变的数值,从而更新UI。在NSObject类引入了一个名为NSKeyValueObserving的分类(category),因此所有的OC对象都可以使用KVO。

KVO中常用的方法

使用KVO时,以下几个方法是比较常用的。

- (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;
- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(nullable void *)context;

使用KVO实现model和view联动步骤

  1. 创建数据模型对象,并且注册需要监听的KeyPath
  2. 在视图类中,实现监听回调方法,即当收到model对象指定KeyPath发生改变时,对UI进行更新。

实例

model.h
ViewController.h
ViewController.m
MyView.h
MyView.m
上一篇 下一篇

猜你喜欢

热点阅读