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