模型类

一个好的模型类应该使用独立于表现层的方式封装数据,模型类应该只引用其他模型类,不应该收用视图或控制器。模型类可能有一个委托恰好是一个控制器,但应该使用协议实现,这样它便不必引用特定的控制器。

在模型类中请尽量使用不可变的对象,不可变对象可以通过调用retain实现copy。因为对象无法改变,你不必创建一个真正的副本。

模型类是系统中最容易测试和重用的类,设计好它们是提高代码整体水平的最好方法。

视图类

视图类负责与用户交互,它们提供信息接受用户事件。可有一个恰好是控制器的委托。

硬件优化的轻量级视图类一般叫“layer”。

视图负责从用户接受事件,但不处理它们。当用户触碰视图,该视图可能提醒一个委托说明它已被触碰,但它不能执行逻辑或者修改其他视图,这些事务由控制器处理。

控制器类

模型和视图由控制器联系,控制器实现大部分应用程序逻辑。控制器往往是程序中最不可能重用的部分,因此关键的一点就是不允许视图和模型类直接引用它们。控制器也应该避免直接引用其他控制器。所谓“直接引用”,指的是引用特定类,引用通过控制器实现的协议是可行的。

一个常见的错误是允许许多对象直接引用应用程序委托。
//不要这样做,是错的

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

Something *something = [appDelegate something];



访问全局对象更好的方式是单例模式。

模型-视图-控制器模式对于提高代码可重用性非常有效。正确的应用MVC有助于程序与Cocoa框架的融合并简化开发过程。