Énumération rapide Objective-C

L'énumération rapide est une fonctionnalité d'Objective-C qui facilite l'énumération à travers une collection. Donc, pour connaître l'énumération rapide, nous devons d'abord connaître la collection, ce qui sera expliqué dans la section suivante.

Collections en Objective-C

Les collections sont des constructions fondamentales. Il est utilisé pour contenir et gérer d'autres objets. Le but général d'une collection est de fournir un moyen courant de stocker et de récupérer efficacement des objets.

Il existe plusieurs types de collections. Bien qu'ils remplissent tous le même objectif de pouvoir contenir d'autres objets, ils diffèrent principalement par la manière dont les objets sont récupérés. Les collections les plus couramment utilisées en Objective-C sont -

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

Si vous souhaitez en savoir plus sur ces structures, veuillez consulter le stockage de données dans Foundation Framework .

Syntaxe d'énumération rapide

for (classType variable in collectionObject ) { 
  statements 
}

Voici un exemple de dénombrement rapide.

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

Maintenant, lorsque nous compilons et exécutons le programme, nous obtiendrons le résultat suivant.

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

Comme vous pouvez le voir dans la sortie, chacun des objets du tableau est imprimé dans un ordre.

Énumération rapide à l'envers

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

Voici un exemple pour reverseObjectEnumerator dans une énumération rapide.

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

Maintenant, lorsque nous compilons et exécutons le programme, nous obtiendrons le résultat suivant.

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

Comme vous pouvez le voir dans la sortie, chacun des objets du tableau est imprimé mais dans l'ordre inverse par rapport à l'énumération rapide normale.