iOS MVC架构

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做出响应

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容