iPhone - iphone 中的数据源和委托方法是啥? [复制]

Posted

技术标签:

【中文标题】iPhone - iphone 中的数据源和委托方法是啥? [复制]【英文标题】:iPhone - What is data source and delegate methods in iphone? [duplicate]iPhone - iphone 中的数据源和委托方法是什么? [复制] 【发布时间】:2012-07-09 17:51:40 【问题描述】:

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

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

【问题讨论】:

请在 google 中搜索这个,你会得到很多结果。这是1个类似的问题。 ***.com/questions/2232147/… 【参考方案1】:

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

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

为了更好地理解委托的价值,考虑一个 现成的 Cocoa 对象,例如文本字段( NSTextField 或 UITextField)或表格视图( NSTableView 或 UITableView )。这些对象旨在满足 以通用方式的特定角色; AppKit 中的窗口对象 例如,框架响应其鼠标操作 控制和处理诸如关闭、调整大小和移动 物理窗口。这种受限和通用的行为必然 限制对象可以了解事件如何影响(或将 影响)应用程序中其他地方的东西,尤其是当 受影响的行为特定于您的应用程序。委托提供 一种让您的自定义对象与特定于应用程序进行通信的方式 对现成对象的行为。

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

数据源

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

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

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

【讨论】:

以上是关于iPhone - iphone 中的数据源和委托方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:如何在自定义单元的动态数量上管理 UITextfield 委托方法

iPhone委托和控制器dealloc?

iPhone SDK:我应该如何/何时发布 UITableView 委托对象?

NSNotificationCenter 在通用应用程序的 iPhone 端不起作用

iPhone4 iOS5 NSFetchedResultsController 如何在子类中正确设置委托?

为啥我的自定义 iPhone 委托不起作用?