Objective-C 中方法和块之间的区别
Difference between methods and blocks in Objective-C
我对编程还比较陌生,有一件事我无法掌握。也就是说,什么是块,why/when 你会使用它们吗?块和方法有什么区别?在我看来,他们似乎在做同样的事情。
有人能给我解释一下吗?
是的,我在Google上花了好几个小时才终于来这里问。
- 块的主要特点是你可以在你所在的方法所在的地方确定它。可以很方便的阅读和理解一个逻辑。
- 块是回调的替代方法。
- 块可以从定义它的词法范围捕获状态。
- 块是匿名函数。
- 块用于稍后执行,但函数不能用于稍后执行。
- 块通常用于回调(不需要使用委托)
- 块是对象,但函数不是对象。
假设您想执行一个操作,如视图中的动画,并希望在完成后得到通知。然后你必须写这段代码:
[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
}];
希望您现在已经清楚该块的用途了。
我对编程还比较陌生,有一件事我无法掌握。也就是说,什么是块,why/when 你会使用它们吗?块和方法有什么区别?在我看来,他们似乎在做同样的事情。
有人能给我解释一下吗?
是的,我在Google上花了好几个小时才终于来这里问。
- 块的主要特点是你可以在你所在的方法所在的地方确定它。可以很方便的阅读和理解一个逻辑。
- 块是回调的替代方法。
- 块可以从定义它的词法范围捕获状态。
- 块是匿名函数。
- 块用于稍后执行,但函数不能用于稍后执行。
- 块通常用于回调(不需要使用委托)
- 块是对象,但函数不是对象。
假设您想执行一个操作,如视图中的动画,并希望在完成后得到通知。然后你必须写这段代码:
[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
}];
希望您现在已经清楚该块的用途了。