一个block的笔记: http://www.cnblogs.com/xinye/archive/2013/03/03/2941203.html
http://segmentfault.com/q/1010000000182523
在一个比较专业的人的博客中发现
Blocks可以访问局部变量,但是不能修改。
int multiplier = 7; int (^myBlock)(int) = ^(int num) { multiplier ++;//编译报错 return num * multiplier; };
如果要修改就要加关键字:__block
__block int multiplier = 7; int (^myBlock)(int) = ^(int num) { multiplier ++;//这样就可以了 return num * multiplier; };
但是他下面又是这样写的
NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"a",@"b",@"abc",nil]; NSMutableArray *mArrayCount = [NSMutableArray arrayWithCapacity:1]; [mArray enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock: ^(id obj,NSUInteger idx, BOOL *stop){ [mArrayCount addObject:[NSNumber numberWithInt:[obj length]]]; }]; NSLog(@"%@",mArrayCount);
问,这样结果也是出来了,到底对还是不对