IOS之MVC开发模式

来源:互联网 发布:浏览器打开淘宝app 编辑:程序博客网 时间:2024/05/18 02:55

iOS开发,以下几种设计模式:

  • Target Action Design Pattern;

  • Notification Pattern

  • MVC Pattern

  • KVO (Key-Value Obsetving)

  • Delegate Pattern

MVC (Modal View Controller)
这个设计的主要用意在于将数据和视图分离开来.在IOS cocoa touch编程中,MVC机制被发挥的淋漓尽致.
只有充分理解MVC,才能写出优雅的IOS app 。为充分理解MVC中相关的概念(比如:Delegate,Protocol,Notification等).

MVC

规则:

  1. Model不允许于视图交互,Model是管理数据,当Model中的数据发送改变时,与之对应的视图应更新。这就需要一种机制来支持。为此IOS框架提供了两张支持:Notification 和 KVO (Key-Value Observing)KVO可简单理解为,为你关注的Ke对象注册一个监听器,当数据发生改变时,就发出广播给所有的监听器。

2.View不允许直接引用Modal,它只能被Controllerd所控制。Controller控制View显示什么数据,我们知道,View所要显示是来源Modal,View上产生的事件(比如Touch事件)需要通知Controller。既然MVC不允许直接打交道,就需要提供一种机制。

3.IOS确实提供一种机制,名:Delegate.Delegate这个词,翻译为:代理,名称上的差异有什么,重要的是如何理解Delegate,Delegate设计模式的引用,就为解决UIView与Controller耦合互动问题。

这里写图片描述

  1. 图中,绿色的箭头表示直接引用。 对View 的直接引用体现在 IBOutlet 上。 当引用一个View 时,比如Button。 需要在ViewController

中声明一个 IBOutlet UIButton * btn;

  1. 然后,我们看View 是怎么向 Controller 通信的。对于这个, iOS 有三种常见的模式:

    1.1
    设置View对应的Action Target。如设置UIButton的Touch up inside的Action Target。

    1.2
    设置View的Delegate,如UIAlertViewDelegate, UIActionSheetDelegate,UITextFieldDelegate等。

    1.3
    设置View的data source, 如UITableViewDataSource。

通过以上三种模式,View既能向Controller通信,又无需知道具体的Controller是谁,这样,View 就与Controller解耦了。

    除此之外, iOS 还提供了 Action-Target 模式来让Controller 监听View 触发的事件。 View 又是如何获取数据呢? iOS提供了 Data source 的概念,其实也就是Protocol 的应用。
0 0
原创粉丝点击