objective-c fast-enumeration

objective c - Enumeración rápida sobre objeto nulo



objective-c fast-enumeration (2)

La enumeración rápida se implementa a través del método - countByEnumeratingWithState:objects:count: que devuelve 0 para indicar el final del bucle. Como nil devuelve 0 para cualquier método, su bucle nunca debería ejecutarse. (Así que es seguro).

¿Qué debería pasar aquí? ¿Es seguro?

NSArray *nullArray=nil; for (id obj in nullArray) { // blah }

Más específicamente, tengo que hacer esto:

NSArray *array=[thing methodThatMightReturnNil]; if (array) { for (id obj in array) { // blah } }

o esta bien ?:

for (id obj in [thing methodThatMightReturnNil]) { // blah }


Nada pasará. Un bucle for-in utiliza el protocolo NSFastEnumeration para NSFastEnumeration en iteración los elementos de una colección, por lo que esencialmente está enviando un mensaje a nil que es seguro en Objective-C.