Enumeración rápida de Objective-C
La enumeración rápida es una característica de Objective-C que ayuda a enumerar a través de una colección. Por lo tanto, para saber acerca de la enumeración rápida, primero necesitamos conocer la recopilación, que se explicará en la siguiente sección.
Colecciones en Objective-C
Las colecciones son construcciones fundamentales. Se utiliza para sujetar y gestionar otros objetos. El propósito de una colección es que proporcione una forma común de almacenar y recuperar objetos de manera eficiente.
Hay varios tipos diferentes de colecciones. Si bien todos cumplen el mismo propósito de poder sostener otros objetos, difieren principalmente en la forma en que se recuperan los objetos. Las colecciones más comunes utilizadas en Objective-C son:
- NSSet
- NSArray
- NSDictionary
- NSMutableSet
- NSMutableArray
- NSMutableDictionary
Si desea saber más sobre estas estructuras, consulte el almacenamiento de datos en Foundation Framework .
Sintaxis de enumeración rápida
for (classType variable in collectionObject ) {
statements
}
A continuación, se muestra un ejemplo de enumeración 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;
}
Ahora, cuando compilemos y ejecutemos el programa, obtendremos el siguiente 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 puede ver en la salida, cada uno de los objetos de la matriz se imprime en un orden.
Enumeración rápida hacia atrás
for (classType variable in [collectionObject reverseObjectEnumerator] ) {
statements
}
A continuación se muestra un ejemplo de reverseObjectEnumerator en enumeración 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;
}
Ahora, cuando compilemos y ejecutemos el programa, obtendremos el siguiente 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 puede ver en la salida, cada uno de los objetos de la matriz se imprime pero en orden inverso en comparación con la enumeración rápida normal.