Cocoa Touch的代表和控制人员的责任?

时间:2008-11-21 18:07:16

标签: iphone cocoa-touch

我是iPhone的新手。几乎每个示例项目(以及默认项目模板)都有一个或多个委托和控制器。有人可以告诉我代表们负责什么以及控制器应该做什么?

2 个答案:

答案 0 :(得分:11)

我能想到的最简单的方法是区分两者:

  • 委托是一种协议(接口),它定义对象实现的方法,以便从其他对象接收特定的消息。委托对象通常用于接收异步回调,例如用户输入,I / O。
  • 控制器是一个通常包含UI元素(视图,控件等)和数据的对象,它们都接收消息并将消息发送到其中的各种对象。在许多情况下,控制器委托,并且可以实现多个委托协议以从多个对象接收事件。

请记住,许多UI元素和控件允许您通过将事件链接到Interface Builder中的IBAction方法将事件传递回控制器。这非常方便,因为它不需要额外的代码来实现委托。但是,其他一些API(如ABPeoplePickerNavigationController或NSURLConnection)在Interface Builder中没有可视化,因此必须使用委托来处理它们的事件。

答案 1 :(得分:4)

委托是一个实现一组方法的对象,您的应用程序或链接的框架依赖于这些方法的功能。它是实现基于委托的设计模式的手段,其中执行动作的责任从一些根源转移到感兴趣的第三方。例如,UIApplication具有委托方法,它们为第三方提供了在应用程序生命周期中的某些时间执行操作的能力。它可以作为时间轴中的里程碑,您可以为此做出贡献。

控制器是一种完全不同的动物,负责控制。 ViewController负责管理视图 - 在需要时将它们从磁盘加载到内存中,而在不需要时卸载它们。它们将内容从一些底层模型对象转换为可供视图对象使用的表单,从磁盘或Internet将内容加载到内存模型中,并在保存和/或退出时将内容转储回磁盘。