Чтобы понять лексическую область видимости блока, я написал следующий код
typedef int (^ MyBlock)(void);
MyBlock b[3];
for (int i=0; i<3; i++) {
b[i]=^{return i;};
}
for (int i=0; i<3; i++) {
NSLog(@"%d",b[i]());
}
NSLog(@"----------------------------");
int j=0;
b[0]=^{return j;};
j++;
b[1]=^{return j;};
j++;
b[2]=^{return j;};
for (int i=0; i<3; i++) {
NSLog(@"%d",b[i]());
}
Я ожидаю 2,2,2 для выполнения обоих блоков.
Кто-нибудь, пожалуйста, объясните мне, почему это так?