Enumeração rápida Objective-C

A enumeração rápida é um recurso do Objective-C que ajuda na enumeração por meio de uma coleção. Portanto, para saber sobre a enumeração rápida, primeiro precisamos saber sobre a coleção, que será explicada na seção seguinte.

Coleções em Objective-C

Coleções são construções fundamentais. Ele é usado para manter e gerenciar outros objetos. Todo o propósito de uma coleção é fornecer uma maneira comum de armazenar e recuperar objetos com eficiência.

Existem vários tipos diferentes de coleções. Embora todos cumpram o mesmo propósito de serem capazes de segurar outros objetos, eles diferem principalmente na forma como os objetos são recuperados. As coleções mais comuns usadas em Objective-C são -

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

Se você quiser saber mais sobre essas estruturas, consulte armazenamento de dados no Foundation Framework .

Sintaxe de enumeração rápida

for (classType variable in collectionObject ) { 
  statements 
}

Aqui está um exemplo de enumeração rápida.

#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;
}

Agora, quando compilarmos e executarmos o programa, obteremos o seguinte resultado.

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

Como você pode ver na saída, cada um dos objetos no array é impresso em uma ordem.

Enumeração rápida para trás

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

Aqui está um exemplo de reverseObjectEnumerator na enumeração rápida.

#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;
}

Agora, quando compilarmos e executarmos o programa, obteremos o seguinte resultado.

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

Como você pode ver na saída, cada um dos objetos na matriz é impresso, mas na ordem reversa em comparação com a enumeração rápida normal.