Учебники

Objective-C Быстрое перечисление

Быстрое перечисление — это функция Objective-C, которая помогает в перечислении через коллекцию. Итак, чтобы узнать о быстром перечислении, нам нужно сначала узнать о коллекции, что будет объяснено в следующем разделе.

Коллекции в Objective-C

Коллекции являются фундаментальными конструкциями. Он используется для хранения и управления другими объектами. Вся цель коллекции состоит в том, что она обеспечивает общий способ эффективного хранения и извлечения объектов.

Существует несколько разных типов коллекций. Хотя все они выполняют одну и ту же цель, заключающуюся в том, что они могут содержать другие объекты, они различаются в основном способом извлечения объектов. Наиболее распространенные коллекции, используемые в Objective-C, —

  • NSSet
  • NSArray
  • NSDictionary
  • NSMutableSet
  • NSMutableArray
  • NSMutableDictionary

Если вы хотите узнать больше об этих структурах, обратитесь к хранилищу данных в Foundation Framework .

Синтаксис быстрого перечисления

for (classType variable in collectionObject ) { 
  statements 
}

Вот пример для быстрого перечисления.

Live Demo

#import <Foundation/Foundation.h>

int main() {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   NSArray *array = [[NSArray alloc]
   initWithObjects:@"string1", @"string2",@"string3",nil];
   
   for(NSString *aString in array) {
      NSLog(@"Value: %@",aString);
   }
   
   [pool drain];
   return 0;
}

Теперь, когда мы скомпилируем и запустим программу, мы получим следующий результат.

2013-09-28 06:26:22.835 demo[7426] Value: string1
2013-09-28 06:26:22.836 demo[7426] Value: string2
2013-09-28 06:26:22.836 demo[7426] Value: string3

Как вы можете видеть в выводе, каждый из объектов в массиве печатается в порядке.

Быстрое перечисление в обратном направлении

for (classType variable in [collectionObject reverseObjectEnumerator] ) { 
  statements 
}

Вот пример для reverseObjectEnumerator в быстром перечислении.

Live Demo

#import <Foundation/Foundation.h>

int main() {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   NSArray *array = [[NSArray alloc]
   initWithObjects:@"string1", @"string2",@"string3",nil];
   
   for(NSString *aString in [array reverseObjectEnumerator]) {
      NSLog(@"Value: %@",aString);
   }
   
   [pool drain];
   return 0;
}

Теперь, когда мы скомпилируем и запустим программу, мы получим следующий результат.

2013-09-28 06:27:51.025 demo[12742] Value: string3
2013-09-28 06:27:51.025 demo[12742] Value: string2
2013-09-28 06:27:51.025 demo[12742] Value: string1

Как видно из выходных данных, каждый из объектов в массиве печатается в обратном порядке по сравнению с обычным быстрым перечислением.