IOS中的Model-View-Controller
来源:互联网 发布:雨杰棋牌数据库工具 编辑:程序博客网 时间:2024/06/05 04:03
一、模型-视图-控制器
MVC(Model-View-Controller)模型-视图-控制器是一种设计模式,其核心理念是:开发程序时所创建的类,都应该属于Model、View或Controller这三种类型中的一种。这能最大限度地分离这3类代码,帮助确保代码的最大可重用性。
- Model:只负责保存和维护应用程序的数据。Apple提供的NSString对象、NSDate对象和NSArray对象都是模型对象。模型对象也可以表示复杂的数据结构,对应于用户在屏幕上所画的图形,或者仅仅表示代办事项应用程序中的一条代办事项。
- View:包括窗口、控件以及其他一些在应用中的可见并能与之交互的元素。UIView对象和其众多的子类对象都是常见的视图对象。
- Controller:把模型和视图绑定在一起的代码,处理各种事件。
二、交流方式
Model与View不可以直接交互,Controller与View、Model可以直接交互,View和Model只能通过机制和方法来支持与Controller交流。
Controller —> Model:Controller可以向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
- IOS中的Model-View-Controller
- iOS—Model,Controller,View
- iOS中的View Controller Lifecycle
- Model-View-Controller Pattern
- Model-View-Controller (MVC)
- Model-View-Controller
- Model-View-Controller Pattern
- Model View Controller(MVC)
- Model - View - Controller
- Model-View-Controller(mvc)
- mvc(model view controller)
- MVC(Model-View-Controller)
- Model-View-Controller
- Model-View-Controller
- Model-View-Controller
- iOS设计模式——MVC(Model-View-Controller)
- iOS设计模式——MVC(Model View Controller)
- iOS设计模式——MVC(Model-View-Controller)
- VC动态库
- 05分布式NOSQL HBASE - Coprocessor协调器
- 四种内部类简单介绍(inner class)
- Android自定义组件简单实例(自定义属性)
- 算法导论23(最小生成树)
- IOS中的Model-View-Controller
- html5各种页面切换效果和模态对话框
- 轻时代:互联网电商怎样为网站“减肥”
- ector中erase用法注意事项
- 计算设备操作系统的维护
- ubuntu 14.04 不能打开蓝牙 传送文件
- 【Android Studio】Gradle Plugin User Guide
- Linux分区挂载
- 谁有空和你“先来后到”?互联网创业要有危机意识