您的位置:首页 > 移动开发 > IOS开发

iOS雨笙 iOS中MVC的原理和联系

2015-09-27 12:19 309 查看
MVC,即Model - View - Controller, 即模型- 视图 - 控制器.

MVC的应用是非常广泛的,我们先来分析一下其内部原理.

Model(模型),是用来存储,处理数据,为应用程序提供数据的,View(视图),是用来展示用户界面的,提供用户交互,展示模型提供的数据.Controller(控制器),类似于一个中间者,既管理获取数据,又管理数据显示,简言之,Model(模型)和View(视图)之间是禁止通信的,必须通过Controller(控制器)进行操控.MVC模式主要就是为了解除模型和视图之间的耦合.

具体是如何通信的呢?我们分部解释.下面C代表控制器,M代表模型,V代表视图.

C和V之间的通信.C可以直接控制V.比如在C中创建一个按钮UIButton.这种情况比较少见,一般C只做事件的处理,很少做视图的创建.那如何处理V的事件呢?V会向C发起通信事件,比如设置按钮的事件(UIButton),设置代理(UITextfield的代理),设置dataSource(UITableView的dataSource),而C会处理这些V产生的事件.

C和M的通信.M是提供数据的,C可以使用M中的数据,那M中的数据有变化如何处理呢?M和C之间的通信方式有KVO,通知,可以在M发生变化时通知C.

再次强调,V和M之间是禁止通信的.他们之间想实现V把M的数据显示出来,必须通过C,C从M中获取数据,然后在C中显示到View上.

贴一张MVC之间的关系图,它们之间的关系大体如图所示.




为什么要多此一举,创建一个Controller呢?主要是为了实现低耦合,提高重用性,多个视图可以享用一个模型,多个控制器享用一个视图.而且易于维护,布局错误找View,数据错误找Model,之间逻辑错误找Controller.

MVC其实是一种思想,让代码层次更分明,更具有可读性,代码量达到一定的程度,其中的好处也自然会体现出来.所以,不要太纠结为什么要这样使用,这本身就没有对和错,不结合代码也许说的很空洞,先大体了解里面思路,在之后的学习工作中我们会天天遇到,久而久之也就明白了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: