【发布时间】:2011-03-28 11:46:08
【问题描述】:
我有一个 for 循环语句如下:
for(NSString* name in nameArray)
nameArray 是 NSArray。
在上面的语句中,什么意思:NSString* name in nameArray
【问题讨论】:
标签: objective-c cocoa objective-c++
我有一个 for 循环语句如下:
for(NSString* name in nameArray)
nameArray 是 NSArray。
在上面的语句中,什么意思:NSString* name in nameArray
【问题讨论】:
标签: objective-c cocoa objective-c++
遍历 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 的快速枚举,它要复杂得多,速度也快得多。它还有一个突变保护,因此如果您对正在迭代的集合进行突变,则会引发异常,这更安全。
这是 Objective-C 2.0 中引入的快速枚举语法。详情请查看this 教程。您还可以在 Google 上搜索“objective c fast enumeration”以获取许多其他在线可用资源。
【讨论】:
这意味着括号内的代码将为nameArray中的每个对象执行,您将通过NSString *name变量访问。
【讨论】: