[英]For loop in Objective-C
我应该在哪里使用for
循环,我应该在哪里使用for in
循环?
我想知道它们之间的区别。
Objective-C中的传统for循环继承自标准C并采用以下形式:
for (/* Instantiate local variables*/ ; /* Condition to keep looping. */ ; /* End of loop expressions */)
{
// Do something.
}
例如,要打印1到10之间的数字,可以使用for循环:
for (int i = 1; i <= 10; i++)
{
NSLog(@"%d", i);
}
另一方面,for循环在Objective-C 2.0中引入,用于循环集合中的对象,例如NSArray实例。 例如,要遍历NSArray中的NSString对象集合并将其全部打印出来,可以使用以下格式。
for (NSString* currentString in myArrayOfStrings)
{
NSLog(@"%@", currentString);
}
这在逻辑上等同于以下传统的for循环:
for (int i = 0; i < [myArrayOfStrings count]; i++)
{
NSLog(@"%@", [myArrayOfStrings objectAtIndex:i]);
}
使用for in循环的优点首先是要查看更清晰的代码。 其次,Objective-C编译器可以优化for循环,因为代码运行速度比使用传统for循环执行相同的操作更快。
希望这可以帮助。
你的意思是快速枚举? 你的问题很不清楚。
正常的for循环看起来有点像这样:
unsigned int i, cnt = [someArray count];
for(i = 0; i < cnt; i++)
{
// do loop stuff
id someObject = [someArray objectAtIndex:i];
}
具有快速枚举的循环(由编译器优化)如下所示:
for(id someObject in someArray)
{
// do stuff with object
}
请记住,您无法在快速枚举中更改正在使用的阵列,因此在使用快速枚举时不会删除或添加
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.