我知道一个块是Objective-C中可重用的可执行代码块。是否有理由我不应该将相同的代码块放在函数中,而当我需要运行该代码时才调用该函数?
最佳答案
这取决于您要完成的工作。关于块的很酷的事情之一是它们捕获了本地范围。您可以通过一个函数获得相同的最终结果,但是最终必须要做一些类似的事情,即在充满相关值的上下文对象之间传递。使用块,您可以执行以下操作:
int num1 = 42;
void (^myBlock)(void) = ^{
NSLog(@"num1 is %d", num1);
};
num1 = 0; // Changed after block is created
// Sometime later, in a different scope
myBlock(); // num1 is 42
因此,只需使用变量num1,就可以捕获定义myBlock时的值。
从苹果的documentation:
关于iphone - 在Objective-C中使用块比使用函数有优势吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8647462/