Apple说,NSMutableArray enumerateObjectsUsingBlock不是同步的
这是一个错误吗?
我有这样的话:
[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%d", idx); }]; NSLog(@"end");
这应该像这样打印
"0" "1" "2" ... "end"
但是印刷就像
"end" "0" "1" "2" ...
Apple说enumerateObjectsWithOptions:usingBlock:
是同步的,所以在枚举之前不应该打印“end”,对吧?
你能证实一下吗?
enumerateObjectsUsingBlock:
绝对是同步的。 我刚刚在CodeRunner中运行了相同的示例:
NSArray *myArray = @[ @1, @2, @3, @4, @5 ]; [myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%d", idx); }]; NSLog(@"end");
并获得以下输出:
0 1 2 3 4 end
无法确认这一点,它按预期打印:“0”,“1”,“2”,“结束”。 另请注意,您正在打印索引,但您的日志从“1”开始。