iOS MVC架构

作者: 赤子追梦心 | 来源:发表于2017-02-17 18:01 被阅读417次

    MVC是我们常用的架构设计模式把类按照功能划分为Model(数据模型)、View(视图)、Controller(控制器)。旨在让Model和View不直接通信,而是通过Controller通信,从而达到解耦的目的。

    这里先说明一下我们MVC的概念:
    MVC绝对不是我们平时在工程中建的那几个文件夹,类似这样:


    文件夹

    这个只是文件,如果你把MVC分别理解成类或者对象就会迷惑,比如:

    MVC是为了实现View与model分离,那为什么还可以在View中声明Model来直接修改?

    其实我们创建的文件夹只是为了方便我们创建的类进行分类,它与MVC架构并不一样,真正的MVC是代表的不同层级

    我们常见的分层架构,有三层架构的:展现层、业务层、数据层。也有四层架构的:展现层、业务层、网络层、本地数据层。
    MVC这种层次划分,主要是针对数据流动的方向而言的。

    1.MVC具体指的是什么

    1. Model - 数据层
    2. View - 展现层
    3. Controller - 业务层

    2.MVC之间的通信

    MVC通信
    • 白色虚线:可直接引用到 controller 中实例化;
    • 白色实线:不可直接引用到 controller 中实例化,需要用其他同步手段进行数据和状态的同步;
    • 黄色实线:不可直接通信;

    可以直接引用的好说,我们可以直接在Controller中引入并实例化Model和View,那View和Model怎么让Controller知道自己有改变?

    2.1 Mode->Controller

    2.1.1 KVO(监听)

    Controller通过监听,监听Model的每个属性的变化来做出响应事件

    2.1.2 Notification(通知)

    Model中创建一个NSNotificationCenter,在Controller中,创建一个方法来接收通知。当Model发生变化时, 他会发送一个通知,而Controller会接收通知

    2.2 View->Controller

    2.2.1 target-Action

    Controller给View添加一个target,当用户的触摸事件发生时,view产生action,Controller接收到之后做出相应的响应。

    2.2.2 delegate & datasource

    Controller可以作为view的代理,当View中检测到被触摸,他会通知Controller做出响应

    相关文章

      网友评论

        本文标题:iOS MVC架构

        本文链接:https://www.haomeiwen.com/subject/sjhhwttx.html