需要澄清 iOS 中的代表

Need clarification on delegates in iOS

根据 Apple 文档:

Delegation is a simple and powerful pattern in which one object in a program acts on behalf of, or in coordination with, another object. The delegating object keeps a reference to the other object—the delegate—and at the appropriate time sends a message to it.

请说明。在UIAlertView的情况下,UIAlertView是委托对象吗?

UIAlertView 的情况下,是的,UIAlertView 是一个委托对象,它的 delegate 属性 指向的是它的委托。

对于 Apple 内置框架中的所有内容,委托对象通常会有一个名为 delegate 的 属性。委托对象是具有此 属性 的对象(这是它保存对其委托的引用的地方)。委托是 delegate 属性 指向的对象。

除此之外,Apple 的一些 类,例如 UITableView(还有很多其他的),还会有一个 datasource 属性。 UITableView 与其数据源的关系与其与其委托的关系相同。

从技术上讲,在这两种情况下,UITableView 都是委托对象,delegatedatasource(可以指向不同的对象)都指向 "delegate" 个对象。

实际上,我们永远不会将 UITableViewdatasource 对象称为它的 "delegate"——我们称它为数据源。这可以防止混淆哪个对象是数据源,哪个对象是委托。

此外,请记住,仅仅因为某物是委托对象并不意味着它不能同时是其他对象的委托。