I’m dating with a model… and a view, and a controller.
众所周知,MVC 是开发客户端最经典的设计模式,iOS 开发也不例外,但是 MVC 有让人无法忽视的严重问题。
MVC, short for Massive View Controller
在通常的开发中,除了简单的 Model、View 以外的所有部分都被放在了 Controller 里面。Controller 负责显示界面、响应用户的操作、网络请求以及与 Model 交互。这就导致了 Controller:
于是 微软的大牛提出了 MVVM
既然 View 和 Controller 是一对好基友,在 MVVM 里面,干脆把它们当做 View。现在将原来 Controller 的部分职责拆分出来由 View Model 承担,主要包括:
但值得注意的是,View Model 不包含与 View 直接关联的部分。一般来说,只要代码中没有 #import <UIKit/UIKit.h>
即可。
MVVM 最好配合 binding 机制,Model 的变化需要同步到 View Model,View Model 的变化也需要同步到 View。 ReactiveCocoa 就可以用来实现 binding,当然它能做的远远不止 binding。