Традиционный цикл for в Objective-C наследуется от стандартного 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 in был введен в Objective-C 2.0 и используется для циклического перемещения по объектам в коллекции, такой как экземпляр NSArray.Например, чтобы перебрать коллекцию объектов NSString в NSArray и распечатать их все, вы можете использовать следующий формат:
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.
Надеюсь, это поможет.