zoukankan      html  css  js  c++  java
  • IOS下的MVC

    一、概念 Model = 你的应用程序是什么,是用户界面无关的部分 Controller = 你的应用程序如何将Model显示给用户(UI逻辑),是中心是桥梁,连通Model和View View = Controller的奴才(minion)、小跟班。view一切听从Controller的指挥,并及时将重要事件报告给Controller

    二、通信 mvc设计模式,IPhone MVC设计模式要点

    1、Model和View永远不能相互通信,只能通过Controller传递。

    2、Controller可以直接与Model对话(读写调用Model),Model通过Notification和KVO机制与Controller间接通信。

    3、Controller可以直接与View对话(通过outlet,直接操作View,outlet直接对应到View中的控件),View通过 action向Controller报告事件的发生(如用户Touch我了)。Controller是View的直接数据源(数据很可能是 Controller从Model中取得的)。Controller是View的代理(delegate),以同步View与Controller,delegate是一组协议,表示程序将要或者已经处于某种状态时,来调整View,以对用户有个交代。例如系统内存不足了,你是 不是相应的降低view的质量以节省内存。

    注:突然冒出个delegate,让人不好理解,其实他不对应xcode为我们创建的XXAppDelegate文件,此文件不属于MVC中的任何一部分,虽然与MVC有联系。

    三、实作 建立一个BtnClick工程系统,会为我们生成以下文件:

    BtnClickAppDelegate.h

    BtnClickAppDelegate.m

    以上两个文件定义了实现UIApplicationDelegate协议的类 BtnClicAppDelegate,UIApplicationDelegate协议是系统预定义的协议,负责监视应用程序的高层行为,处理几个关键 系统消息,是应用程序生命周期为我们预留的Hook,每个iphone应用程序必不可少的。

    iphone应用程序的生命周期: mvc设计模式,IPhone MVC设计模式要点

    BtnClickViewController.h BtnClickViewController.m 实现了MVC中的Controller.可以定义一些IBOutlet元素和IBAction方法与View通信。

    @interface BtnClickViewController : UIViewController{
         IBOutlet UILabel* statusText;
    }
    @property (retain,nonatomic) UILabel *statusText;
    - (IBAction)buttonPressed:(id)sender;
    @end
    
     

    View对于那个文件?

    答案是Resource下的MainWindow.xib和BtnClickViewController.xib。

    MainWindow.xib文件在在应用程序加载是会被自动加载,这其实是在plist文件中配置的。然后MainWindow.xib会加载子视图 BtnClickViewController.xib。为什么会命名为ViewController,而不是分开命名?可能是因为View和Controller关系太紧密了,view就是Controller的跟班。

    实际编程时一定要分清MVC各部分的职责。

    自始至终没间Model的面,其实M是可选的,特别是对于简单的应用。任何与界面无关的,我们添加的自定义类来定义我们的应用程序的对象,都属于Model的范畴。

  • 相关阅读:
    14_java之变量|参数|返回值|修饰符
    NYOJ 202 红黑树 (二叉树)
    NYOJ 138 找球号(二) (哈希)
    NYOJ 136 等式 (哈希)
    NYOJ 133 子序列 (离散化)
    NYOJ 129 树的判定 (并查集)
    NYOJ 117 求逆序数 (树状数组)
    NYOJ 93 汉诺塔 (数学)
    HDU 2050 折线分割平面 (数学)
    天梯赛L2-008 最长对称子串 (字符串处理)
  • 原文地址:https://www.cnblogs.com/chu888chu888/p/2162248.html
Copyright © 2011-2022 走看看