使用块?

use*_*590 3 iphone int block ios

在最近的一次采访中,我被要求预测代码段的输出.即使我做对了,我也无法解释如何得到它.这是代码段.

int num =2;
int (^ myblock)(void)=^{
    return num*5;
};

NSLog(@"my block  call 1  %d",myblock());
num = 5;
NSLog(@"my block  call 2  %d",myblock());
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么答案都是10次.谢谢

Val*_*adu 5

如果未使用__block标记,则num变量将在块中复制.这意味着外部作用域num和内部num实际上保存在内存中的不同地址,而更改一个不会影响另一个.要强制编译器使用相同的地址,请使用__block标记变量