今日我们来讲讲MVVM
这属于架构专题的知识了,MVC众所周知,苹果推荐使用的设计模式。但我们会发现随着需求的增加,视图控制器变得越来越臃肿。因此MVVM应运而生
什么是MVVM?
MVVM展开是Model-View-ViewModel
MVVM是基于MVC,让我们回忆下MVC的经典模式
控制器充当视图和模型之间的媒介与协调者,视图不引用模型。模型与控制器之间用KVO传递消息,视图与控制器之间用用户的交互传递消息
虽然视图和控制器是不同的技术,但项目中我们经常将视图与控制器连接在一起,换句话说,为什么我们不正规他们之间的连接
由此,在MVVM中,视图和视图控制器正式连接在一起,我们将其视为一体。视图没有引用模型,控制器也没有,相反是他们引用模型。
在典型的MVC中,控制器很臃肿,这是因为放了许多可以迁移掉的逻辑(即presentation logic),即那些将model数据转换成View可以呈现的东西,比如:把给字符串加上富文本属性,把NSDate数据格式转为一个NSString
所以,我们在model与(View/Controller)之间插入一个ViewModel,将presentation logic放到ViewModel中
我们将用于在视图控制器中呈现内容的所有逻辑抽象为一个视图模型,该模型与实际的UI无关。即在ViewModel中不要导入 <#import UIKit>
注意重点:MVVM 配合一个绑定机制效果最好,因为当Model是可变时,当ViewModel背后的Model数据变化,ViewModel的属性可以及时更新其属性,进而更新View的显示