IOS 之MVC
来源:互联网 发布:电子图书软件下载, 编辑:程序博客网 时间:2024/05/16 16:14
MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。 ---(维基百科)
MVC 提出后,得到了广泛的应用。 MFC,J2EE, Java Swing,.NET Perl Ruby on Rails,Python,JavaScript,PHP,ActionScript3等都有各自实现。对于IOS开发,同样用到MVC。下面就MVC在IOS开发中的一些情况做做简单的介绍。
模型—反应你的程序是什么.但它不关心如何展示
控制器—你的模型如何展示给用户.它关心UI逻辑
视图—渲染数据, 展示给用户并接收用户反馈。
MVC的所有内容就是在对上述三者的分工及通讯。
1) Controller 可以直接和 model,view通讯
一般用法是controller直接引用model,view实例对象。
2) Model 和 view不应该直接通讯
3) View 与 controller之间的通讯
a) View接收一些用户事件,但并不涉及业务处理。所以一般是通过protocol-delegate方法,把用户事件传回给控制器处理
b) View 不能拥有数据,但view的展示需要数据。一般也是通过协议去获取。例如UITableView,其获取数据的方式就是通过定义UITableViewDatasource这个协议去获取。
4) Controller 一般会作为数据源(而不是模型)。
同样,参考UITableViewController,其实现了 UITableViewDataSource,而不是model实现该协议。
5) Controller并要时需解析/格式化 model返回的数据给View
View 不关注业务逻辑。 Model不关注view。这就导致model返回数据,可以在某些情况下并不适于view直接展示。因此,这时controller一般需要先针对view的需要处理好数据,然后才交给view。
另一典型情况是系统错误信息的处理。系统报错信息五花八门,但不是每一条信息都适合直接给用户展示。因此,controller这时也是需要对错误信息先进行处理,然后才能放行,交给view。
6) Model与 controller 通讯?
Model 应该是跟UI独立的。如果model 有信息需要更新或者其他任意事件需要反馈,一般使用消息/通知模式。
例如一些后台处理程序:邮件刷新,数据统计等…用户并不关心(无UI触发),但又需要提示用户。这时可以在相应的controller设立消息接收器,而model,则在需要触发响应时,通过通知的方式,把信息发放出去。而它自己,其实是不理会消息的后续的情况的。
下面是从斯坦福教程中截图的一副MVC的关系图,很是简洁明了。
另附两张不同MVC模型间的联系的图片
- ios开发之MVC
- IOS 之MVC
- IOS 之 MVC
- iOS之MVC架构
- iOS之MVC
- iOS开发之MVC
- IOS之MVC。。。
- iOS开发之MVC模型
- iOS 之 MVC 开发模式
- IOS之MVC开发模式
- iOS 之 MVC 开发模式
- ios 5 开发 1 之 mvc
- IOS设计模式之三:MVC模式
- IOS设计模式之三:MVC模式
- IOS设计模式之三:MVC模式
- IOS设计模式之MVC模式
- IOS设计模式之三:MVC模式
- IOS开发基础之MVC模式
- 文件读写: 二进制方式和文本方式的区别
- 【怎么避免无线IP发生冲突】
- MC1488 MC1489
- 磁盘高速缓存
- 项目经理市场需求
- IOS 之MVC
- 用Darwin和live555实现的直播框架
- 移动web前端开发之常见bug解决
- how to debug expect
- 内存管理 - 11.11 新的每个CPU接口
- 增强Android应用视觉效果的10个UI设计技巧
- HttpServlet详解
- 权限控制与认证解决方案
- 正确安装VMwareTools