默认情况下,在程序块中访问的外部变量是复制过去的,即写操作不对原变量生效。但是你可以加上 __block来让其写操作生效,示例代码如下:
1 2 3 4 5 6
__block int a = 0; void (^foo)(void) = ^{ a = 1; } foo(); // 这里,a的值被修改为1