IOS中的Model-View-Controller

来源:互联网 发布:雨杰棋牌数据库工具 编辑:程序博客网 时间:2024/06/05 04:03

一、模型-视图-控制器


MVC(Model-View-Controller)模型-视图-控制器是一种设计模式,其核心理念是:开发程序时所创建的类,都应该属于ModelViewController这三种类型中的一种。这能最大限度地分离这3类代码,帮助确保代码的最大可重用性。

  • Model:只负责保存和维护应用程序的数据。Apple提供的NSString对象、NSDate对象和NSArray对象都是模型对象。模型对象也可以表示复杂的数据结构,对应于用户在屏幕上所画的图形,或者仅仅表示代办事项应用程序中的一条代办事项。
  • View:包括窗口、控件以及其他一些在应用中的可见并能与之交互的元素。UIView对象和其众多的子类对象都是常见的视图对象。
  • Controller:把模型和视图绑定在一起的代码,处理各种事件

二、交流方式



ModelView不可以直接交互,ControllerViewModel可以直接交互,ViewModel只能通过机制和方法来支持与Controller交流。


Controller —> ModelController可以向Model提出自己的需求,再由Model作出响应。Controller可以导入Model头文件或是API,因此Controller可以知晓Model的一切内容。


Model —> Controller:需要KVO( key-Value Observing )与Notification机制,它们能将Model中数据的变化通知发送出去,区别是Notification是需要一个发送Notification的对象来通知观察者,而KVO是直接通知到观察对象.


Controller —>View:Controller通过输出口(outlet)直接操作View中的各种控件,输出口在Controller中定义。


View —> Controller:View通过数据源(data source)、委托(delegate)和目标-动作(target-action)三种方式来和Controller进行交流。

  • 数据源(data source):Controller是View的直接数据源,因为View是不能存储它所展示的数据的,所以当需要显示数据的时候,View会发送出请求,以获得所需要的数据,数据很可能是Controller从Model中获得。
  • 委托(delegate):委托是协议的一种,Controller为代理人,View为委托人,其作用是传值或者传事件(委托人(View)告诉代理人(Controller)发生了什么事情,让代理人(Controller)去处理)
  • 目标-动作(target-action):也就是说当特定的事件发生时(比如按钮被按下),向指定的对象发送某个特定的消息。这里接收消息的对象是目标,消息的选择器(Selector)是动作


0 0
原创粉丝点击