【发布时间】:2014-01-21 11:08:41
【问题描述】:
这是一个错误吗?
我有这样的台词:
[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”不应该在枚举之前打印,对吧?
你们能确认一下吗?
【问题讨论】:
-
您使用的是
enumerateObjectsWithOptions:usingBlock:还是enumerateObjectsusingBlock:...如果您使用的是withOptions,您指定了哪些选项? -
我的经验也是 enumerateObjectsusingBlock: 没有排序(每次调用的顺序不同),所以我也在寻找确认。
-
@L14M333 - 没关系,Apple 说两者都是同步的。顺便说一句,我都试过了。
-
请在 GitHub 上放一个能重现此问题的示例项目。对上面代码的任何简单测试都会打印正确的输出,因此您的问题中缺少某些内容。如果您可以重现它,您需要在提交雷达时将示例项目发送给 Apple。
-
@RubberDuck 只是想告诉你,我在自己的代码中遇到了同样的问题。就在今天,一位同事也发生了这种情况。所以这里有一个问题,这是肯定的。
标签: ios iphone ipad cocoa-touch enumeration