【问题标题】:Does fast enumeration in Objective-C guarantee the order of iteration?Objective-C 中的快速枚举能保证迭代的顺序吗?
【发布时间】:2011-02-16 04:23:24
【问题描述】:

我可以期望它按顺序从数组的开头到结尾吗?在文档中找不到任何关于此的内容。

即是

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

总是会打印出相同的结果

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

【问题讨论】:

    标签: objective-c arrays iteration fast-enumeration


    【解决方案1】:

    来自 Apples 的 Objective-C documentation 快速枚举:

    对于具有明确定义顺序的集合或枚举器(例如从数组派生的 NSArray 或 NSEnumerator 实例),枚举按该顺序进行,因此如果需要,只需计算迭代次数即可为您提供正确的集合索引.

    【讨论】:

    • 推论是具有未定义顺序的集合(即NSSetNSDictionary)具有未定义的迭代顺序。
    【解决方案2】:

    再次发布后,我找到了答案。我的旧参考文献没有提到迭代的顺序,但在线的参考文献却提到了。数组确实是按顺序迭代的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      相关资源
      最近更新 更多