2013-05-08 11 views
5

Se ho il seguente pezzo di codice:L'enumerazione rapida valuta l'espressione di raccolta su ogni iterazione?

 for (UIView *view in [myArray copy]) 

Vuol dire che sto inviando il messaggio copy a myArray su ogni iterazione, o Objective-C è abbastanza intelligente da fare copy solo una volta, e l'uso per l'intero ciclo?

+3

Non difficile da spiegare. Hai fatto questa domanda molto chiaramente! – matt

+2

La risposta è che 'copia' viene eseguita una sola volta. L'espressione a destra viene valutata prima dell'avvio dell'operazione 'in'. –

+0

Confronta http://stackoverflow.com/questions/3882254/objective-c-for-each-fast-enumeration-evaluation-of-collection o http://stackoverflow.com/questions/12281461/is-this-an- inefficiente-way-of-usando-fast-enumerazione. –

risposta

5

Non è una questione di "intelligente", ma sì, l'espressione [myArray copy] viene valutata una volta in primo piano.

Problemi correlati