For循环在Objective-C中

我应该在哪里使用for循环,我应该在哪里使用for in循环?

我想知道他们之间的区别。

Objective-C中传统的for循环是从标准Cinheritance而来的,格式如下:

 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 in循环,所以代码运行速度要快于传统的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 } 

请记住,您不能更改快速枚举中使用的数组,因此在使用快速枚举时不会删除或添加