Enumerazione rapida Objective-C

L'enumerazione rapida è una funzionalità di Objective-C che aiuta a enumerare una raccolta. Quindi, per conoscere l'enumerazione rapida, è necessario prima conoscere la raccolta, che verrà spiegata nella sezione seguente.

Collezioni in Objective-C

Le collezioni sono costrutti fondamentali. Viene utilizzato per contenere e gestire altri oggetti. L'intero scopo di una raccolta è che fornisce un modo comune per archiviare e recuperare gli oggetti in modo efficiente.

Esistono diversi tipi di raccolte. Sebbene soddisfino tutti lo stesso scopo di poter tenere altri oggetti, differiscono principalmente nel modo in cui gli oggetti vengono recuperati. Le raccolte più comuni utilizzate in Objective-C sono:

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

Se vuoi saperne di più su queste strutture, fai riferimento all'archiviazione dei dati in Foundation Framework .

Sintassi di enumerazione rapida

for (classType variable in collectionObject ) { 
  statements 
}

Ecco un esempio per l'enumerazione rapida.

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

Ora, quando compiliamo ed eseguiamo il programma, otterremo il seguente risultato.

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

Come puoi vedere nell'output, ciascuno degli oggetti nell'array viene stampato in un ordine.

Enumerazione rapida all'indietro

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

Ecco un esempio per reverseObjectEnumerator nell'enumerazione rapida.

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

Ora, quando compiliamo ed eseguiamo il programma, otterremo il seguente risultato.

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

Come puoi vedere nell'output, ciascuno degli oggetti nell'array viene stampato ma nell'ordine inverso rispetto alla normale enumerazione rapida.