NSMutableArray enumerateObjectsUsingBlock不同步,因为苹果说
问题描述:
这是一个错误?NSMutableArray enumerateObjectsUsingBlock不同步,因为苹果说
我有这样的台词:
[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%d", idx);
}];
NSLog(@"end");
这应该打印这样
"0"
"1"
"2"
...
"end"
但打印像
"end"
"0"
"1"
"2"
...
苹果称enumerateObjectsWithOptions:usingBlock:
是同步的,因此 “端”在枚举之前不应该打印,对吧?
你们能证实吗?
答
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
您使用'enumerateObjectsWithOptions:usingBlock:'或'enumerateObjectsusingBlock:'...如果你正在使用withOptions,你指定了什么选项? – liamnichols
enumerateObjectsusingBlock也是我的经验:没有命令(顺序不同,每次调用),所以我也在寻求确认。 – Unheilig
@ L14M333 - 无所谓,Apple表示两者都是同步的。顺便说一句我已经尝试了两个。 – SpaceDog