For loop in Objective-C For loop in Objective-C objective-c objective-c

For loop in Objective-C


The traditional for loop in Objective-C is inherited from standard C and takes the following form:

for (/* Instantiate local variables*/ ; /* Condition to keep looping. */ ; /* End of loop expressions */){    // Do something.}

For example, to print the numbers from 1 to 10, you could use the for loop:

for (int i = 1; i <= 10; i++){    NSLog(@"%d", i);}

On the other hand, the for in loop was introduced in Objective-C 2.0, and is used to loop through objects in a collection, such as an NSArray instance. For example, to loop through a collection of NSString objects in an NSArray and print them all out, you could use the following format.

for (NSString* currentString in myArrayOfStrings){    NSLog(@"%@", currentString);}

This is logically equivilant to the following traditional for loop:

for (int i = 0; i < [myArrayOfStrings count]; i++){    NSLog(@"%@", [myArrayOfStrings objectAtIndex:i]);}

The advantage of using the for in loop is firstly that it's a lot cleaner code to look at. Secondly, the Objective-C compiler can optimize the for in loop so as the code runs faster than doing the same thing with a traditional for loop.

Hope this helps.


You mean fast enumeration? You question is very unclear.

A normal for loop would look a bit like this:

unsigned int i, cnt = [someArray count];for(i = 0; i < cnt; i++){    // do loop stuff   id someObject = [someArray objectAtIndex:i];}

And a loop with fast enumeration, which is optimized by the compiler, would look like this:

for(id someObject in someArray){   // do stuff with object}

Keep in mind that you cannot change the array you are using in fast enumeration, thus no deleting nor adding when using fast enumeration