MVVM笔记

551 阅读2分钟

1.斯坦福iOS开发笔记

标题是:iOS C193P MVVM and the Swift Type System

笔记内容:

19965398-9554d69553eec53b.jpg

1. MVVM中的Model和View

  • 1.1 Model是与UI无关的,它封装了数据和应用的逻辑,Model是基础
  • 1.2 ViewModel的映射,数据总是从Model流向ViewView会尽可能的去表达Model
  • 1.3 View中是没有状态的,所有关于界面的状态应该在Model里,View只会从从Model获得状态再显示出来
  • 1.4 ModelView是响应式的:即Model改变后,会立刻影响View发生改变

p1.jpg

2. ViewModel层

  • 2.1 ViewModel层的工作用一句话总结就是:将View绑定在Model层上 我们希望View层中没有复杂的逻辑和代码,所以将这部分代码(将Model层的数据转换成View真正可用的数据,比如将一种数据类型转换成另一种数据类型)装在了ViewModel层中。
  • 2.2 Model层是业务数据的单元,ViewModel将数据转成视觉View层所需的数据样式使用,可以说ViewModel就是一个翻译官、中介等。

p22.jpg

3. 从Model到View的过程

  • 3.1 第一步:观察Model的变化。Swift语言可以使ViewModel轻易知道Model层发生变化,无论Modelstruct还是class
  • 3.2 第二步:“ViewModel翻译”。就是我们上面说的将Model中的复杂数据转换成View可用的数据。
  • 3.3 广播“变化”:注意!ViewModel不会存任何指向View的指针!任意订阅View都可以接受到某个ViewModel发出的广播ViewModel不会直接和View进行通信!

4. 从View到Model的过程

  • 4.1 View会通过方法(Intent Function)来呼叫ViewModel
  • 4.2 ViewModel再修改Model
  • 4.3 当Model被修改,就会进入到3的步骤

2.斯坦福MVC

斯坦福公开课经典的MVC架构图:

16ae0203377c5ad0.jpg

M: Model,数据单元 V: View,视图页面,比如UIView等 C: ViewController,负责ViewModel之间调度

View发生交互事件会通过target-action或者delegate方式回调给ViewController 同时ViewController还要承担把Model通过KVONotification方式传来的数据传输给View用于展示