繁体   English   中英

对于Objective-C中的循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM