这是一个错误吗?
我有这样几行:
[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
关于ios - NSMutableArray enumerateObjectsUsingBlock 并不像 Apple 所说的那样同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21256372/