阻止与代表

Fre*_*Lee 8 delegates objective-c objective-c-blocks

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

我刚从论坛上遇到以下声明:

"代表是过去.阻碍是未来."

1)对于代表来说,区块是否是"委托"职责的首选方式?
2)使用委托与块有什么特别的好处吗?

小智 25

我认为代表们做什么和做什么块有一点误会.

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

  1. 委托 - >您将一个对象作为另一个对象的委托,并且您必须指定委托对象将响应的"父"对象生成的事件类型.

  2. 目标动作 - > UI交互中的典型,其中UI子视图(按钮,滑块等)基于由预定义事件处理程序(通常是某些目标)处理的一些用户输入(例如触摸/轻击)生成事件开发人员指定的C方法).

  3. 通知 - >对象将自身注册NSNotificationCenter为"侦听"任何类型事件的实例,并响应这些事件中的一个或多个.

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

它们是自包含的代码片段,可以访问调用方法的局部变量和参数.它们可用于在一堆不同的上下文中定义行为.块(我认为)的主要好处是它可以通过消除使代码库混乱的无关过度特定的方法来简化代码.块有助于将代码本地化到最有意义的地方:就在回调机制中.

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

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