iOS开发之理解iOS中的MVC设计模式

转载 2016年08月30日 11:22:54


模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中。在iOS开发中MVC的机制被使用的淋漓尽致,充分理解iOSMVC模式,有助于我们程序的组织合理性。

model_view_controller

模型对象

模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算。例如,模型对象可能是表示游戏中的角色或地址簿中的联系人。用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去,最终会创建或更新模型对象。模型对象更改时(例如通过网络连接接收到新数据),它通知控制器对象,控制器对象更新相应的视图对象。

视图对象

视图对象是应用程序中用户可以看见的对象。视图对象知道如何将自己绘制出来,并可能对用户的操作作出响应。视图对象的主要目的,就是显示来自应用程序模型对象的数据,并使该数据可被编辑。尽管如此,在 MVC 应用程序中,视图对象通常与模型对象分离。

在iOS应用程序开发中,所有的控件、窗口等都继承自 UIView,对应MVC中的V。UIView及其子类主要负责UI的实现,而UIView所产生的事件都可以采用委托的方式,交给UIViewController实现。

控制器对象

在应用程序的一个或多个视图对象和一个或多个模型对象之间,控制器对象充当媒介。控制器对象因此是同步管道程序,通过它,视图对象了解模型对象的更改,反之亦然。控制器对象还可以为应用程序执行设置和协调任务,并管理其他对象的生命周期。

控制器对象解释在视图对象中进行的用户操作,并将新的或更改过的数据传达给模型对象。模型对象更改时,一个控制器对象会将新的模型数据传达给视图对象,以便视图对象可以显示它。

对于不同的UIView,有相应的UIViewController,对应MVC中的C。例如在iOS上常用的UITableView,它所对应的Controller就是UITableViewController。

  1. Model和View永远不能相互通信,只能通过Controller传递。
  2. Controller可以直接与Model对话(读写调用Model),Model通过Notification和KVO机制与Controller间接通信。
  3. Controller可以直接与View对话,通过outlet,直接操作View,outlet直接对应到View中的控件,View通过action向Controller报告事件的发生(如用户Touch我了)。Controller是View的直接数据源(数据很可能是Controller从Model中取得并经过加工了)。Controller是View的代理(delegate),以同步View与Controller。

有关”模型-视图-控制器”的完整信息,请参阅 Concepts in Objective-C Programming(Objective-C 编程中的概念)中的:Model-View-Controller

本文转载自:https://liuzhichao.com/p/1379.html

iOS中MVC设计模式的优缺点

编程以来就一直被灌输MVC设计模式,具体MVC使用到底好在哪里 又有那些不足之处,可以通过下面的文章得以了解。 一、mvc原理   mvc是一种程序开发设计模式,它实现了显示模块与功能模块的分离...
  • Shave_Kevin
  • Shave_Kevin
  • 2015年03月16日 10:07
  • 2411

实际案例讲解iOS设计模式——MVC模式

本文通过一个实际的案例,讲解如何将一个都写在ViewController中的代码,使用MVC使用分别写到Model、View和Controller之间,以减轻Controller的代码量,减少各个模块...
  • nhwslxf123
  • nhwslxf123
  • 2015年11月08日 01:36
  • 2072

iOS中的MVC和MVP的区别

在开发ios应用时,相信很多同学遇到和我一样的情况,虽然项目刚开始构架时自认为MVC层级分的特别明确,但最终往往是一个Activity有上千行代码,而且业务逻辑和UI的显示混杂在一起,导致后续项目的维...
  • touch929
  • touch929
  • 2017年01月06日 15:53
  • 750

实际案例讲解iOS设计模式——MVC模式

转载:http://blog.csdn.net/nhwslxf123/article/details/49703773 MVC模式是iOS编程中提到的最多次的设计模式,也是使用最频繁的设计模式之...
  • u012361288
  • u012361288
  • 2016年06月17日 17:44
  • 5016

iOS 基于MVC设计模式练习UITableView使用 —— HERO博客

iOS 基于MVC设计模式练习UITableView使用。
  • hero_wqb
  • hero_wqb
  • 2016年03月07日 21:40
  • 1564

(iOS开发总结)MVC模式

一、MVC 模式MVC,即模型-视图-控制器(Model-View-Model),是软件开发中应用甚广的一种设计模式。其用意是将数据与视图分化,利用模型数据控制视图的显示,但两者的交互由控制器控制。在...
  • Chong_son
  • Chong_son
  • 2016年08月18日 22:26
  • 376

iOS MVC开发模式的优缺点

转载地址:http://www.mamicode.com/info-detail-989164.html         事情从一般开发中一个massive viewController说起,一个巨...
  • baidu_31170383
  • baidu_31170383
  • 2015年10月21日 19:13
  • 2878

IOS开发中的几种设计模式介绍

ios开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。 优势:解耦合...
  • liwei3gjob
  • liwei3gjob
  • 2013年05月14日 17:42
  • 58241

iOS 关于MVC MVVM的理解(一)

原文地址: http://casatwy.com/iosying-yong-jia-gou-tan-viewceng-de-zu-zhi-he-diao-yong-fang-an.html 一. MV...
  • xy_26207005
  • xy_26207005
  • 2016年04月24日 15:33
  • 2805

理解MVC设计模式

快速理解MVC设计模式(适用于菜鸟)
  • u012302681
  • u012302681
  • 2014年09月08日 07:34
  • 636
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发之理解iOS中的MVC设计模式
举报原因:
原因补充:

(最多只允许输入30个字)