上一節(jié)截獲自動變量值,只能保存在執(zhí)行Block語法時表達(dá)式中使用的外部自動變量瞬間的值,保存后不能修改外部自動變量的值。
想要在Block語法的表達(dá)式中修改外部自動變量的值,需要自動變量附加__block說明符。
__block int val = 1;
void (^blk) (void) = ^void (void) {
val = 5;
};
printf("val = %d\n",val);
blk();
printf("val = %d\n",val);
輸出:
val = 1
val = 5
說明:
使用附有__block說明符的自動變量可在Boclk中被賦值修改,這樣的變量稱為__block變量。