Loops: For Better or For Worse
Looping with variables is probably one of the first programming concepts you learned. You'll be happy to know that Objective-C has for loops—and the syntax is better than that of plain C.
You'll learn all about the NSArray class in the next chapter, but for the moment all you need to know is that it's a class that manages zero or more objects. When you have more than one of something, it's likely that you'll want to loop over the contents at some point.
You could use the good old for loop in standard C:
NSArray *myArray = [NSArray arrayWithObjects:@"THIS", @"IS", @"AWESOME!!!", nil];NSUInteger count = [array count];NSUInteger i;for (i = 0; i < count; i++) {NSString *element = [myArray objectAtIndex:i];if ([element isAwesomeString]) { NSLog(@"CONGRATULATIONS!!!!!!!!!"); } }
But Objective-C has a construct called fast enumeration that saves a bunch of typing:
NSArray *myArray = [NSArray arrayWithObjects:@"THIS", @"is!", @"AWESOME!!!!",
nil];
for (NSString *element in myArray) {
if ([element isAwesomeString]) {
NSLog(@"CONGRATULATIONS!!!!!!!!!");
}
}More importantly, this form of enumeration is optimized by the runtime and removes the possibility for bugs with loop invariants.
Another example of smart-but-lazy code that's simpler, safer, and faster.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access