如果在block之后修改了block内部读取的值,因为该值被capture了,所以在block生效时不会收影响。比如:int value = 42;void (^testBlock)(void) = ^{ NSLog(“%d”,value);}//print 42 while extvalue = 84;testBlock();
如果想改变block中的引用值,需要用__block标志。这时候该值的生命周期在block内外都是有效的。__block int value = 42;void (^testBlock)(void) = ^{ NSLog(“%d”,value);}//print 84 while extvalue = 84;testBlock();