2013-05-08 56 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]被预先评估一次。