IOS学习笔记1----MVC模式

变更传播机制:

一个模型可对应多个视图
1. 如果用户通过一个视图的控制器改变了模型
中的数据,那么依赖于该数据的其他视图也
应该反映出这样的变化
2.一旦模型的数据发生了变化,模型需要通知
所有相关的视图做出相应的变化
维护数据的一致性

视图(View)的作用

1.向用户显示信息
- 不同的视图使用不同的方法呈现信息
- 每个视图组件都有一个更新函数,这个函数被模型变更通知激活
- 这个函数被激活(此时模型已经改变)后,将使得视图重新和模型一致
- 在初始化阶段,视图向模型登记请求变更通知(表)
2.从模型获得数据
3.通过状态查询函数实现
-例如:定时刷新

控制器(Controller)

1.每个视图有一个相关的控制器组件(一一对应)
2.控制器组件接受事件,并翻译成输入
3.事件如何发送到控制器由用户界面平台决定
4.事件被翻译成为对模型或者视图的请求
5.如果控制器的行为依赖于模型的状态,那么控制器也需要向模型登记请求变更通知
-例如:用户点击按钮,按钮的事件响应函数将采取相应的措施处理用户要求
6.用户仅仅通过控制器与系统交互

MVC模式

1.MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建应用程序的模式
- Model(模型)表示应用程序核心(比如数据库记录列表)。
- View(视图)显示数据(数据库记录)。
- Controller(控制器)处理输入(写入数据库记录)。
-
2.Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
   -通常模型对象负责在数据库中存取数据。
3.View(视图)是应用程序中处理数据显示的部分。
   -通常视图是依据模型数据创建的。
4.Controller(控制器)是应用程序中处理用户交互的部分。
   -通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC 约定, Model 不允许与View 打交道。 Model 是管理数据的, 当Model中的数据发生变化时,与之对应的视图应更新。 这就需要一种机制来支持。为此 iOS 框架提供了两种支持机制: Notification 和KVO (Key-Value Observing)。 KVO 可简单理解为,为你所关注的 Key 对象注册一个监听器。 当有数据发生变化时,就会发出广播给所有的监听器。
MVC 也约定, View 不允许直接引用Model, 它只能被Controller 所控制。 Controller 控制 View 显示什么数据。我们知道,View 所要显示的数据是来源于 Model, View 上产生的事件 ( 比如 Touch事件)需要通知 Controller。 既然MVC 不允许直接打交道,就需要提供一种机制。
iOS 确实提供了一种Delegate机制 (委托,代理机制)。Delegate设计模式的引入,就是为了解决UIView与Controller松耦合互动问题。
MVC模式图解

  1. 图中,绿色的箭头表示直接引用。 对View 的直接引用体现在 IBOutlet 上。 当引用一个View 时,比如Button。 需
    ViewController中声明一个 IBOutlet UIButton * btn;
  2. 然后,我们看View 是怎么向 Controller 通信的。对于这个, iOS 有三种常见的模式:
    设置View对应的Action Target。如设置UIButton的Touch up inside的Action Target。
    设置View的Delegate,如UIAlertViewDelegate, UIActionSheetDelegate,UITextFieldDelegate等。
    设置View的data source, 如UITableViewDataSource。
    通过以上三种模式,View既能向Controller通信,又无需知道具体的Controller是谁,这样,View 就与Controller解耦了。
    除此之外, iOS 还提供了 Action-Target 模式来让Controller 监听
    View 触发的事件。 View 又是如何获取数据呢? iOS提供了 Data source 的概念,其实也就是Protocol 的应用。
    多MVC协作模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值