Рассмотрим следующий фрагмент кода:
for(/* some condition */) {
int x = rand();
[array addObject:^(){
NSLog(@"%d", x);
}]
}
for(void (^block)() in array) {
block();
}
Теперь я ожидаю, что этот фрагмент кода распечатает все значения, присвоенные x в цикле for; однако кажется, что все блоки имеют одну и ту же переменную 'x' (предположительно, последний).
Есть идеи, почему это так, и как я могу исправить код, чтобы каждый блок содержал переменную 'x', как это было во время определения блока?