iOS—Model,Controller,View
2016-07-11 17:48
281 查看
Model,Controller,View相互通讯的规则:
Controller可以直接和Model通信
Controller也可以直接和View通信
Model和View永远不能直接通信
iOS中View和Controller的通信是透明和固定的,主要通过outlet和action实现
View使用Delegate接口和Controller同步信息
View不直接和数据通信,使用dataSource接口从Controller处获取数据
View的delegate和dataSource一般就是Controller
Controller负责为View翻译和格式化Model的数据
Model使用Notification & KVO的方式分发数据更新信息,Controller可以有选择的监听自己感兴趣的信息。
View也可以监听广播信息,但一般不是Model发出的信息
一个完整的App就是很多MVC的集合
例:
在一个设计良好的Cocoa MVC程序中,协调控制器对象常常“拥有”归档到nib文件的仲裁控制器。下图显示了这两种控制器类型之间的关系。
File's Owner:故名思议,就是这个nib文件的拥有者,由拥有者来负责load这个nib;File's Owner 表示视图控制器。用来关联
IB 中的 outlet (textfield, label)与实例变量(library classes 中定义)的关联
First Responder:每个程序都会有一个第一响应者,比如鼠标事件,键盘事件等,它就是对应的那个对象。比如多文档程序中,你的 menu的响应事件一般都是连接到FirstResponder中去的,因为你的主界面一般都在别的nib里面,此时的FirstResponder就是你的那个主nib的FileOwner;First
Responder 表示当前响应用户触摸的屏幕上的对象。在应用程序生命周期内, First Responder 在用户与屏幕交互时变化。例如,假设有一个表单。当用户触摸表单中的某个文本域时,那个文本域将成为活动文本域,并担当 First Responder 的角色。
NSApplication:就是每个程序的单例NSApplication对象,你可以从中拿到event啥的等等~
本博文参考:理解iOS中的MVC设计模式
Controller可以直接和Model通信
Controller也可以直接和View通信
Model和View永远不能直接通信
iOS中View和Controller的通信是透明和固定的,主要通过outlet和action实现
View使用Delegate接口和Controller同步信息
View不直接和数据通信,使用dataSource接口从Controller处获取数据
View的delegate和dataSource一般就是Controller
Controller负责为View翻译和格式化Model的数据
Model使用Notification & KVO的方式分发数据更新信息,Controller可以有选择的监听自己感兴趣的信息。
View也可以监听广播信息,但一般不是Model发出的信息
一个完整的App就是很多MVC的集合
例:
在一个设计良好的Cocoa MVC程序中,协调控制器对象常常“拥有”归档到nib文件的仲裁控制器。下图显示了这两种控制器类型之间的关系。
File's Owner:故名思议,就是这个nib文件的拥有者,由拥有者来负责load这个nib;File's Owner 表示视图控制器。用来关联
IB 中的 outlet (textfield, label)与实例变量(library classes 中定义)的关联
First Responder:每个程序都会有一个第一响应者,比如鼠标事件,键盘事件等,它就是对应的那个对象。比如多文档程序中,你的 menu的响应事件一般都是连接到FirstResponder中去的,因为你的主界面一般都在别的nib里面,此时的FirstResponder就是你的那个主nib的FileOwner;First
Responder 表示当前响应用户触摸的屏幕上的对象。在应用程序生命周期内, First Responder 在用户与屏幕交互时变化。例如,假设有一个表单。当用户触摸表单中的某个文本域时,那个文本域将成为活动文本域,并担当 First Responder 的角色。
NSApplication:就是每个程序的单例NSApplication对象,你可以从中拿到event啥的等等~
本博文参考:理解iOS中的MVC设计模式
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C# MVC模式下商品抽奖功能实现
- Zend的MVC机制使用分析(二)
- ASP.NET MVC 4 捆绑和缩小实例介绍
- ASP.NET Mvc开发之查询数据
- ASP.NET MVC中将控制器分离到类库的实现
- asp.net实现在非MVC中使用Razor模板引擎的方法
- ASP.NET MVC中的AJAX应用
- 为ASP.NET MVC及WebApi添加路由优先级
- ASP.NET MVC中图表控件的使用方法
- Asp.net mvc实时生成缩率图到硬盘
- 剖析ASP.NET MVC的DependencyResolver组件
- ASP.NET MVC的四种验证编程方式