模型-视图-控制器(MVC)模式将对象分为三种不同的类型。是的,你猜对了:这三种类型是:模型、视图和控制器!
用下图来解释这些类型之间的关系相当简单。
- (Models)模型保存应用数据。它们通常是结构或简单的类。
- (View)视图在屏幕上显示视觉元素和控件。它们通常是UIView的子类。
- (Controllers)控制器在模型和视图之间进行协调。它们通常是UIViewController的子类。
MVC在iOS编程中非常常见,因为这是苹果在UIKit中选择采用的设计模式。
允许控制器为他们的模型和视图提供强大的属性,因此他们可以可直接访问。控制器可以有一个以上的模型和/或视图。
相反,模型和视图不应持有对其所属控制器的强引用。这将导致一个保留循环。
相反,模型通过属性观察(您将在后面的章节中深入了解)与控制器通信,而视图通过IBActions与控制器通信。
这让您可以在多个控制器之间重用模型和视图。赢了!
注意:视图可以通过委托对自己的控制器有一个弱引用(见第4章,“委托模式”)。例如,一个UITableView可以为它的委托和/或dataSource引用持有对它自己的视图控制器的弱引用。然而,表视图并不知道这些都是设置给它自己的控制器的–它们只是碰巧是这样。
控制器更难重用,因为它们的逻辑通常对它们所做的任何任务都非常特殊。因此,MVC并没有尝试重用它们。<