2013-05-08 6 views
5

私は次のコードがある場合:高速列挙はすべての反復でコレクション式を評価しますか?

 for (UIView *view in [myArray copy]) 

をそれは私がすべての繰り返しでmyArraycopyメッセージを送信しています、またはObjective-Cのは一度だけcopyを行うのに十分スマートですし、使用することを意味していますそれは全体のループですか?

+3

全く説明するのは難しいことではありません。あなたはこの質問を非常に明確に尋ねました! – matt

+2

答えは、 'copy'は一度だけ実行されることです。右側の式は 'in'演算が開始される前に評価されます。 –

+0

比較http://stackoverflow.com/questions/3882254/objective-c-for-each-fast-enumeration-evaluation-of-collectionまたはhttp://stackoverflow.com/questions/12281461/is-this-an-非効率的な使用方法の高速列挙である。 –

答えて

5

「スマート」の問題ではありませんが、はい、式[myArray copy]が一度前に評価されます。