让我们看看这个例子:
int a = 1;
[someOperation onCompletion:^(...) {
NSLog("%d", a);
}];
a = 2;
假设someOperation
需要 1 秒才能完成。所以控制台上会有“2”。
如何从定义回调时定义具有变量值的回调主体(以便在这种情况下回调执行将在控制台上打印“1”)?
在 JavaScript 中,它可以按如下方式完成:
setTimeout("someFunction("+variable+")", 1000);
代替
setTimeout(function() { someFunction(variable); }, 1000);
但是如何在 ObjC 中完成这件事呢?