Ответ 1
Традиционный для цикла в 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 (int i = 0; i < [myArrayOfStrings count]; i++)
{
NSLog(@"%@", [myArrayOfStrings objectAtIndex:i]);
}
Преимущество использования цикла for for во-первых заключается в том, что для него требуется гораздо более чистый код. Во-вторых, компилятор Objective-C может оптимизировать цикл for in, так как код работает быстрее, чем делать то же самое с традиционным для цикла.
Надеюсь, что это поможет.