Objective-C 中方法和块之间的区别

Difference between methods and blocks in Objective-C

我对编程还比较陌生,有一件事我无法掌握。也就是说,什么是块,why/when 你会使用它们吗?块和方法有什么区别?在我看来,他们似乎在做同样的事情。

有人能给我解释一下吗?

是的,我在Google上花了好几个小时才终于来这里问。

  1. 块的主要特点是你可以在你所在的方法所在的地方确定它。可以很方便的阅读和理解一个逻辑。
  2. 块是回调的替代方法。
  3. 块可以从定义它的词法范围捕获状态。
  • 块是匿名函数。
  • 块用于稍后执行,但函数不能用于稍后执行。
  • 块通常用于回调(不需要使用委托)
  • 块是对象,但函数不是对象。

假设您想执行一个操作,如视图中的动画,并希望在完成后得到通知。然后你必须写这段代码:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:context:)];
[UIView commitAnimations];

但是如果您使用如下的块,则需要几行代码:

[UIView animateWithDuration:2.0 animations:^{
// set up animation
} completion:^{
// this will be executed on completion
}];

希望您现在已经清楚该块的用途了。