1 前言
在IOS的Cocoa Touch提供的成千上万个类中,大多数可以分为三类,而且其中的对象之间都有简单和明确的交互方式。每个IOS应用程序都使用了一个简单的设计模式:模型-视图-控制器。简称MVC,今天我们就来学习一下IOS中的这个模式。
2 详述
2.1 设计模式图:
2.2 三层介绍
2.2.1 视图层(View)
IOS应用屏幕上出现的控件,如按钮,滚动列表等,统称为View。视图知道如何展现数据,有些视图还知道如何响应用户输入,例如UITextField。
在很多应用中我们还要创建自己的视图用于显示数据,比图显示股票表的标准控件,在IOS中是没有提供的,我们需要拿出自己的解决方案。为应用创建独一无二的样子,但是都要基于UIView和UIController类来实现我们自己的视图。
2.2.2 模型层(Model)
Model是应用程序的核心和灵魂,因为他负责管理数据。与视图不同,模型不了解用户当前执行的动作或者当前屏幕上显示的内容,其唯一的功能是操作和处理在应用程序中的用户数据。通常提供这些基本行为提供内部逻辑实现。
例如从Intet上下载股票数据的应用程序,需要使用模型对象来存储历史价格。
有些模型对象可以跨应用程序工作,如联系人和用户默认设置的数据库。还有一些其他的模型,如股票应用程序所用的模型,是专属某个应用的。
在创建自己的模型时候常会用到Cocoa Touch内部实现的类,如:NSArray和NSDictionary类将数据存储到有序表或者哈希表中。此外还有NSURLConnection和NSData这样的类可以从互联网获取和存储数据。
最后可以使用Core Data框架来操作SQLite数据库(存储和检索对象)。
2.2.3 控制器层(Controller)
Controller要复杂一些,他充当着视图和模型的中介,在模型中的数据变化时,负责更新视图。同样控制器会知道有用户输入,并相应的更新模型数据。
2.3 举例MVC工作流程
(1) 用户点击按钮刷新视图,动作被发送到控制器。
(2) 控制器接着让模型去加载新的数据。
(3) 模型打开一个网络连接并开始下载数据。
(4) 在数据加载完成后,模型会通知控制器新的数据已经准备好了。
(5) 控制器传送行的数据到视图中,用户看到更新后的结果。
2.4 MVC好处
模型和视图不直接交互,降低耦合度,减少依赖。
控制器对象往往负责初始化任务。模型和视图在某些时候必须加载和初始化,控制器的核心角色使其成为了这项工作的必然选择。
UIViewController类及其几个子类主要负责执行这些基本的功能。这几个类是在开始学习其他类之前必须要掌握的。
3 结语
以上是所有内容,希望对大家有所帮助。