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

时间:2016-04-25 19:36:18

标签: methods objective-c-blocks

我对编程比较陌生,有一件事我无法帮助我。也就是说,什么是块以及为什么/何时使用它们?块和方法有什么区别?对我来说,他们似乎也做了同样的事情。

有人可以向我解释一下吗?

是的,我确实在谷歌上花了好几个小时才终于来这里询问。

2 个答案:

答案 0 :(得分:4)

  • 块是匿名函数。
  • 块用于稍后执行,但该函数不能用于稍后执行。
  • 块通常用于回叫(无需使用代理)
  • 块是对象,但函数不是对象。

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

[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
}];

希望你现在明白使用该块。

答案 1 :(得分:3)

  1. 块的主要特征是您可以在方法的位置确定它。阅读和理解逻辑非常方便。
  2. 这些块是回调的替代方案。
  3. 这些块可以从定义它的词法范围中捕获状态。