iPhone - iPhone中的数据源和委托方法是什么?

时间:2012-07-10 09:16:23

标签: iphone delegates datasource

  

可能重复:
  What's the difference between data source and delegate?

我是iPhone新手。我对什么是委托和数据源方法以及它们的作用感到困惑。有人可以向我解释这些差异吗?

1 个答案:

答案 0 :(得分:1)

来自Apple的Concepts in Objective-C Programming文档:

  

委托委托是一个对象,当该对象遇到事件时,该对象代表另一个对象或与另一个对象协同工作   在一个程序中。委托对象通常是响应者对象   是,从AppKit或UIResponder继承自NSResponder的对象   UIKit - 响应用户事件。委托是一个对象   委托控制该事件的用户界面,或者是   至少要求在特定应用程序中解释该事件   方式。

     

为了更好地理解授权的价值,有助于考虑一个   现成的Cocoa对象,例如文本字段(的实例)   NSTextField或UITextField)或表视图(   NSTableView或UITableView)。这些对象旨在实现   以通用方式发挥特定作用; AppKit中的一个窗口对象   例如,框架响应鼠标对其的操纵   控制和处理关闭,调整大小和移动等内容   物理窗口。这种受限制和通用的行为必然   限制对象可以知道事件如何影响(或将会影响)   影响)应用程序中其他地方的东西,尤其是当   受影响的行为特定于您的应用程序。代表团提供   自定义对象与特定于应用程序的通信方式   对现成物体的行为。

     

委托的编程机制为对象提供了机会   协调他们的外表和状态与其他地方的变化   在程序中,通常由用户操作引起的更改。更多   重要的是,委托使一个对象可以改变   另一个对象的行为,而不需要继承它。该   delegate几乎总是您的自定义对象之一,并且通过   定义它包含通用的特定于应用程序的逻辑   委托对象不可能知道自己。

     

数据来源

     

数据源就像委托,但不是   委托控制用户界面,它是委托控制的   数据。数据源是NSView和UIView对象持有的插座   例如需要来源的表视图和大纲视图   填充他们的可见数据行。视图的数据源是   通常是作为其委托的同一个对象,但它可以是任何对象   宾语。与委托一样,数据源必须实现一个或   更多的非正式协议方法,为视图提供数据   它需要,并且在更高级的实现中,处理数据   用户可以直接在这些视图中进行编辑。

     

与代理一样,数据源是必须存在的对象   从请求数据的对象接收消息。应用程序   使用它们必须确保它们的持久性,如果它们保留它们   内存管理代码中必需的。

     

数据源负责对象的持久性   分发给用户界面对象。换句话说,他们是   负责那些对象的内存管理。然而,   每当视图对象(如大纲视图或表视图)访问时   来自数据源的数据,只要它使用它就会保留对象   数据。但它不会长时间使用这些数据。通常它   只保留足够长的数据以显示它。

相关问题