Apple说,NSMutableArray enumerateObjectsUsingBlock不是同步的

Spa*_*Dog 3 iphone cocoa-touch enumeration ipad ios

这是一个错误吗?

我有这样的话:

[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

     NSLog(@"%d", idx);
}];

NSLog(@"end");
Run Code Online (Sandbox Code Playgroud)

这应该像这样打印

"0"
"1"
"2"
...
"end"
Run Code Online (Sandbox Code Playgroud)

但是印刷就像

"end"
"0"
"1"
"2"
...
Run Code Online (Sandbox Code Playgroud)

Apple说enumerateObjectsWithOptions:usingBlock:是同步的,所以在结束之前不应该打印"结束",对吧?

你们能证实吗?

Jam*_*ost 7

enumerateObjectsUsingBlock:绝对是同步的.我刚刚在CodeRunner中运行了相同的示例:

NSArray *myArray = @[ @1, @2, @3, @4, @5 ];
[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSLog(@"%d", idx);
}];

NSLog(@"end");
Run Code Online (Sandbox Code Playgroud)

得到以下输出:

0
1
2
3 
4
end
Run Code Online (Sandbox Code Playgroud)

  • 这很奇怪,因为我不是...... (2认同)