我知道一个块是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/

10-14 20:47