この例を見てみましょう:
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でこのことを達成する方法は?