美文网首页
IOS基础 通过KVO实现Model和View联动

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

作者: jonas_c | 来源:发表于2020-12-04 14:35 被阅读0次

在当下比较流行的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联动步骤

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

实例

model.h
ViewController.h
ViewController.m
MyView.h
MyView.m

相关文章

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

    在当下比较流行的MVVM设计模式中,需要一种双向绑定的机制,在数据模型发生改变时,将变化呈现在视图上。iOS开发过...

  • Google MVP Demo学习心得

    MVP模式通过presenter隔离了View和Model两个模块之间的交互,实现View和Model完全解耦。 ...

  • iOS KVO 基础与底层原理

    iOS KVO 基础与底层原理 KVO基础 KVO是通过给对象object的属性property注册observe...

  • 我理解的angular双向绑定

    所谓双向,是指从model到view和从view到model。 View -> model相对直观,通过在view...

  • Django-最简单二级联动

    Django + ajax 实现一个最简单的二级联动 model 设计 view.py city_dropdown...

  • Vue学习笔记

    MVVM Model-View-ViewModule通过listener和 bind实现双向绑定 SPA 单页应用...

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • VUE知识点集锦

    MVVM模式 核心理念: 通过声明式的数据绑定 来实现 View 层和其他层的分离; Model 层 Model ...

  • KVO详解

    在iOS开发中,我们可以通过KVO机制来监听某个对象的某个属性的变化。 KVO实现步骤 KVO的实现分为三步: 1...

  • iOS-KVO(二) 使用注意点

    iOS-KVO(一) 基本操作iOS-KVO(二) 使用注意点iOS-KVO(三) 窥探底层实现iOS-KVO(四...

网友评论

      本文标题:IOS基础 通过KVO实现Model和View联动

      本文链接:https://www.haomeiwen.com/subject/mlamwktx.html