首页 关于 微信公众号
欢迎关注我的微信公众号

iOS中的MVC概念

MVC 的概念其实都已经听到耳朵起茧了,不过最近看了斯坦福的iOS开发公开课,还是觉得挺有收获的,所以再在这里总结一下。

MVC都是些啥

Model

ModelWhat your application is(but not how it is desplayed),各种数据以及它们之间的逻辑等都是Model,Model是独立于UI的。

Controller

ControllerHow your Model is presented to the user (UI logic),即UI逻辑,Controller来把Mode的数据和逻辑表达出来,绘制、展示到屏幕上。

View

ViewYour Controller's minions,是Controller要用到的各种基础性的UI元素(Genetic UI Element),是Controller表达Model数据和逻辑用到的工具。

总的来说,就是 ControllerView 来把 Model 表达到屏幕上。

M、V、C之间如何对话

Controller —> Model (OK)

Controller 对相应的 Model 说话是很正常的。

Controller —> Vew (OK)

Controller 对相应的 View 说话也是很正常的。

Model <—> View (Never)

ModelView 之间则永远不要对话!

View —> Controller (Limited)

View 一般不要对 Controller 直接说话。但有时候,确实有这个需要,所以有以下几种方式让ViewController说话:

Model —> Controller (Limited)

Model 一般也不要对 Controller 直接对话。但有时候也有需求,所以提供了一些机制来满足这些需求:

MVC对话示意图

一大波MVCs

通过组装很多个 MVCs 我们就能构建更复杂的程序。在这里面我们可能会用到分层式的 MVC 的概念,比如把一个 MVC 当做另一个 MVC 的 View 的一部分。原理其实都是一样的。

合理的多层 MVCs 结构应该如图:

不合理的则是这样的:

Blog

Opinion

Project