1.斯坦福iOS开发笔记
标题是:iOS C193P MVVM and the Swift Type System
- 原视频连接: cs193p.sites.stanford.edu/
- B站有中英字幕版: www.bilibili.com/video/BV1Az…
笔记内容:
1. MVVM中的Model和View
- 1.1
Model是与UI无关的,它封装了数据和应用的逻辑,Model是基础 - 1.2
View是Model的映射,数据总是从Model流向View,View会尽可能的去表达Model - 1.3
View中是没有状态的,所有关于界面的状态应该在Model里,View只会从从Model获得状态再显示出来 - 1.4
Model和View是响应式的:即Model改变后,会立刻影响View发生改变
2. ViewModel层
- 2.1
ViewModel层的工作用一句话总结就是:将View绑定在Model层上 我们希望View层中没有复杂的逻辑和代码,所以将这部分代码(将Model层的数据转换成View真正可用的数据,比如将一种数据类型转换成另一种数据类型)装在了ViewModel层中。 - 2.2
Model层是业务数据的单元,ViewModel将数据转成视觉View层所需的数据样式使用,可以说ViewModel就是一个翻译官、中介等。
3. 从Model到View的过程
- 3.1 第一步:观察
Model的变化。Swift语言可以使ViewModel轻易知道Model层发生变化,无论Model是struct还是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架构图:
M: Model,数据单元
V: View,视图页面,比如UIView等
C: ViewController,负责View和Model之间调度
View发生交互事件会通过target-action或者delegate方式回调给ViewController
同时ViewController还要承担把Model通过KVO、Notification方式传来的数据传输给View用于展示