2013-05-08 57 views
5

如果我有下面的代碼:快速枚舉是否在每次迭代中評估集合表達式?

 for (UIView *view in [myArray copy]) 

這是否意味着,我要送的copy消息myArray在每個迭代上,或Objective-C的是足夠聰明,做copy只有一次,和使用它爲整個循環?

+3

不難解釋。你問這個問題很清楚! – matt 2013-05-08 20:50:38

+2

答案是'copy'只執行一次。在「開始」操作之前評估右側的表達式。 – 2013-05-08 20:51:35

+0

比較http://stackoverflow.com/questions/3882254/objective-c-for-each-fast-enumeration-evaluation-of-collection或http://stackoverflow.com/questions/12281461/is-this-an-低效路 - 中 - 使用快速枚舉。 – 2013-05-08 21:01:56

回答

5

這不是一個「聰明」的問題,但是,是的,表達式[myArray copy]被預先評估一次。