¿Por qué la enumeración rápida no omite los NSNumbers cuando especifico NSStrings?

Pensé que sabía cómo usar la enumeración rápida, pero hay algo que no entiendo al respecto. Si creo tresNSString objetos y tresNSNumber objetos y ponerlos en unNSMutableArray:

NSString *str1 = @"str1";
NSString *str2 = @"str2";
NSString *str3 = @"str3";

NSNumber *nb1 = [NSNumber numberWithInt:1];
NSNumber *nb2 = [NSNumber numberWithInt:2];
NSNumber *nb3 = [NSNumber numberWithInt:3];

NSArray *array = [[NSArray alloc] initWithObjects:str1, str2, str3, nb1, nb2, nb3, nil];

Luego hago una enumeración rápida en todosNSString objetos, así:

for (NSString *str in array) {
    NSLog(@"str : %@", str);
}

En la consola, obtengo este resultado:

2011-08-02 13:53:12.873 FastEnumeration[14172:b603] str : str1
2011-08-02 13:53:12.874 FastEnumeration[14172:b603] str : str2
2011-08-02 13:53:12.875 FastEnumeration[14172:b603] str : str3
2011-08-02 13:53:12.875 FastEnumeration[14172:b603] str : 1
2011-08-02 13:53:12.876 FastEnumeration[14172:b603] str : 2
2011-08-02 13:53:12.876 FastEnumeration[14172:b603] str : 3

He registrado solo laNSStrings, pero obtengo una línea para cada objeto en la matriz, incluso laNSNumbers y no entiendo por qué. ¿La enumeración rápida siempre usa todos los objetos contenidos en una matriz?

Respuestas a la pregunta(8)

Su respuesta a la pregunta