【问题标题】:iPhone - What is data source and delegate methods in iphone? [duplicate]iPhone - iphone 中的数据源和委托方法是什么? [复制]
【发布时间】:2012-07-09 17:51:40
【问题描述】:
【问题讨论】:
标签:
iphone
delegates
datasource
【解决方案1】:
来自 Apple 的 Concepts in Objective-C Programming 文档:
委托委托是一个对象,当该对象遇到事件时,该对象代表另一个对象或与之协作
在一个程序中。委托对象通常是响应者对象——即
即,继承自 AppKit 中的 NSResponder 或中的 UIResponder 的对象
UIKit——响应用户事件。委托是一个对象
是对该事件的用户界面的委托控制,或者是
至少被要求在特定应用程序中解释事件
方式。
为了更好地理解委托的价值,考虑一个
现成的 Cocoa 对象,例如文本字段(
NSTextField 或 UITextField)或表格视图(
NSTableView 或 UITableView )。这些对象旨在满足
以通用方式的特定角色; AppKit 中的窗口对象
例如,框架响应其鼠标操作
控制和处理诸如关闭、调整大小和移动
物理窗口。这种受限和通用的行为必然
限制对象可以了解事件如何影响(或将
影响)应用程序中其他地方的东西,尤其是当
受影响的行为特定于您的应用程序。委托提供
一种让您的自定义对象与特定于应用程序进行通信的方式
对现成对象的行为。
委托的编程机制使对象有机会
协调它们的外观和状态与其他地方发生的变化
在程序中,更改通常由用户操作带来。更多的
重要的是,委托使一个对象可以改变
另一个对象的行为而不需要从它继承。这
委托几乎总是您的自定义对象之一,并且通过
定义它包含了通用的特定于应用程序的逻辑
并且委托对象不可能知道自己。
数据源
数据源就像一个委托,除了,而不是
用户界面的委托控制,它是对用户界面的委托控制
数据。数据源是 NSView 和 UIView 对象持有的出口
例如表格视图和大纲视图,它们需要一个来源
填充他们的可见数据行。视图的数据源是
通常是作为其委托的同一个对象,但它可以是任何
目的。与委托一样,数据源必须实现一个或
非正式协议的更多方法为视图提供数据
它需要并且在更高级的实现中,需要处理以下数据
用户直接在此类视图中进行编辑。
与委托一样,数据源是必须呈现给
从请求数据的对象接收消息。应用程序
使用它们的人必须确保它们的持久性,如果
在内存管理代码中是必需的。
数据源负责其对象的持久性
分发给用户界面对象。换句话说,它们是
负责这些对象的内存管理。然而,
每当诸如大纲视图或表格视图之类的视图对象访问时
来自数据源的数据,只要它使用它就会保留对象
数据。但它不会使用很长时间的数据。通常它
只保留足够长的时间来显示数据。