【问题标题】:in statement in for loopfor 循环中的 in 语句
【发布时间】:2011-03-28 11:46:08
【问题描述】:

我有一个 for 循环语句如下:

    for(NSString* name in nameArray)

nameArray 是 NSArray。

在上面的语句中,什么意思:NSString* name in nameArray

【问题讨论】:

    标签: objective-c cocoa objective-c++


    【解决方案1】:

    遍历 nameArray 中的所有 NSString*。 可以写得不太干净:

    for (int i=0;i<[nameArray count];++i) {
        NSString *name = [nameArray objectAtIndex:i];
        // Do stuff
    }
    

    记住:不要迭代一个可变数组并改变它(并确保没有其他线程这样做)。在这种情况下,您需要像上面显示的那样在每次迭代时调用count

    【讨论】:

    • 虽然结果通常是一样的,但这段代码不是in 语法代码编译成的。正如@taskinoor 所提到的,in 语法是Objective-C 2.0 的快速枚举,它要复杂得多,速度也快得多。它还有一个突变保护,因此如果您对正在迭代的集合进行突变,则会引发异常,这更安全。
    【解决方案2】:

    这是 Objective-C 2.0 中引入的快速枚举语法。详情请查看this 教程。您还可以在 Google 上搜索“objective c fast enumeration”以获取许多其他在线可用资源。

    【讨论】:

      【解决方案3】:

      这意味着括号内的代码将为nameArray中的每个对象执行,您将通过NSString *name变量访问。

      【讨论】:

        猜你喜欢
        • 2019-05-28
        • 1970-01-01
        • 2011-08-17
        • 2014-08-28
        • 2016-06-16
        • 2019-06-09
        • 1970-01-01
        相关资源
        最近更新 更多