试图更好地理解代表

Trying to better understand delegates

我一直在努力真正理解委托,但一直停留在 purpose/reason 想要使用它们的问题上。我了解如何实现、使用它们等,但在我看来,分配 self.delegate = someObject 只是使用 someObject

的语法糖

例如,我可以使用委托方法并执行以下操作:

self.delegate = someObject;
// Maybe we do some additional stuff here
[self.delegate doSomething];

但我不能也这样做:

[someObject doSomething]

我知道委派很好,因为它可以让您在不同 类 的对象之间进行通信。我想我的问题是我不明白为什么在不将整个 类 暴露给各个对象的情况下不能在没有授权的情况下执行此操作。我的猜测是我在这里遗漏了一些与 OOP 概念有关的东西。这是干货吗?

委托用于将责任委托给其他人(其他 class)。例如,公司的首席执行官对法律不太了解,所以他聘请了律师并在他(他的代表)遇到法律问题时询问他(他的代表)。在这种情况下,CEO专门领导公司,律师专门负责法律。[​​=11=]

这不是DRY,而是单一职责原则。 http://en.wikipedia.org/wiki/Single_responsibility_principle

原则上,委托类似于 'callback' 模式(在 C# 中)。使用委派的原因有​​很多。首先是将工作委托给另一个对象,以在您的应用程序中的对象之间进行通信。此外,对于 iOS,委托模式还用于简化组件的自定义和 UI 您的应用程序(tableview、nsurlconnection、...)。