理解iOS中的MVC设计模式

http://www.cocoachina.com/bbs/read.php?tid-48069-keyword-MVC.html


Model: 代表你的应用程序是什么(不是怎么展现)



Controller: 控制你的Model怎么展现给用户(UI逻辑)


View: Controller的奴隶。。。


Model,Controller,View相互通讯的规则:
  1. Controller可以直接和Model通信
  2. Controller也可以直接和View通信
  3. Model和View永远不能直接通信
  4. iOS中View和Controller的通信是透明和固定的,主要通过outlet和action实现
  5. View使用Delegate接口和Controller同步信息
  6. View不直接和数据通信,使用dataSource接口从Controller处获取数据
  7. View的delegate和dataSource一般就是Controller
  8. Controller负责为View翻译和格式化Model的数据
  9. Model使用Notification & KVO的方式分发数据更新信息,Controller可以有选择的监听自己感兴趣的信息。
  10. View也可以监听广播信息,但一般不是Model发出的信息
  11. 一个完整的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啥的等等~



关于视图层次:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值