9

可能重复:
代码块是否完全取代了委托?

我刚刚从一个论坛遇到了以下声明:

“代表是过去。街区是未来。”

1) 区块是不是代表“委托”职责 的首选方式?
2)使用委托与块有什么特别的好处吗?

4

1 回答 1

25

我认为对代表做什么和块做什么有一点误解。

在 Objective-C 中,有三种方法来处理回调:

  1. 委托 -> 使一个对象成为另一个对象的委托,您必须指定委托对象将响应的“父”对象生成的事件类型。

  2. Target-Action -> UI 交互中的典型,其中 UI 子视图(按钮、滑块等)基于由预定义事件处理程序(通常是一些 Objective-开发人员指定的 C 方法)。

  3. 通知 -> 对象注册自己的实例NSNotificationCenter以“侦听”任何类型的事件并响应这些事件中的一个或多个。

块本身不是处理委托或任何其他回调的方法。

它们是独立的代码片段,可以访问调用方法的局部变量和参数。它们可用于定义一堆不同上下文中的行为。块的主要好处(如我所见)是它可以通过消除多余的过于具体的方法来简化代码,这些方法会使您的代码库变得混乱。块有助于将代码本地化到最有意义的地方:就在回调机制中。

基本上,使用它们可以增强可读性并使代码更易于维护。

这些好处是否使块成为处理回调的“首选”方法绝对是个人意见和经验的问题。;)

于 2012-11-16T19:43:11.130 回答