Перечисление
Перечисление является процессом последовательной работы на элементах объекта — обычно набора — каждый самое большее один раз, по одному поочередно. Перечисление также упоминается как итерация. При перечислении объекта Вы обычно выбираете один элемент в объекте за один раз и выполняете работу на нем или с ним. Объект обычно является набором, таким как массив или набор. В концептуально самом простом случае можно использовать стандарт C for
цикл для перечисления содержания массива, как показано в следующем примере:
NSArray *array = // get an array; |
NSInteger i, count = [array count]; |
for (i = 0; i < count; i++) { |
id element = [array objectAtIndex:i]; |
/* code that acts on the element */ |
} |
Используя для цикла, однако, может быть неэффективным, и требует упорядоченного набора элементов. Перечисление является более общим. Какао поэтому обеспечивает, два дополнительных означает перечислять объекты — NSEnumerator
класс и быстрое перечисление.
NSEnumerator
Несколько классов Какао, включая классы набора, можно попросить обеспечить перечислитель так, чтобы можно было получить элементы, сохраненные экземпляром поочередно. Например:
NSSet *aSet = // get a set; |
NSEnumerator *enumerator = [aSet objectEnumerator]; |
id element; |
while ((element = [enumerator nextObject])) { |
/* code that acts on the element */ |
} |
В целом, однако, использование NSEnumerator
класс заменяется быстрым перечислением.
Быстрое перечисление
Несколько классов Какао, включая классы набора, принимают NSFastEnumeration
протокол. Вы используете его для получения элементов, сохраненных экземпляром с помощью синтаксиса, подобного тому из стандарта C for
цикл, как проиллюстрировано в следующем примере:
NSArray *anArray = // get an array; |
for (id element in anArray) { |
/* code that acts on the element */ |
} |
Как имя предполагает, быстрое перечисление более эффективно, чем другие формы перечисления.