Objective-C中的快速枚举是否保证迭代顺序?

33

我是否可以期望它按顺序从数组的开头到结尾进行遍历?在文档中找不到任何关于这个问题的信息。

即,

for (id val in array)
{
   NSLog(@"%@", val);
}

始终会打印相同的内容

for (int i = 0; i < [array count]; ++i)
{
   NSLog(@"%@", [array objectAtIndex:i]);
}
2个回答

59

来自苹果公司与Objective-C相关的文档中关于快速枚举的说明

对于有明确定义顺序的集合或枚举器(如NSArray或从数组派生的NSEnumerator实例),枚举将按照该顺序进行,因此简单地计算迭代次数将会给你一个正确的索引到集合的访问方法。


7
推论是,具有未定义顺序的集合(例如NSSetNSDictionary)具有未定义的迭代顺序。 - Jonathan Grynspan

0

我又一次在发布后找到了答案。我的旧参考资料没有提到迭代的顺序,但在线文档中有。数组确实按顺序迭代。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接