快速枚举在每次迭代时都会评估集合表达式吗?

5
如果我有以下代码片段:
        for (UIView *view in [myArray copy])

这是否意味着我在每次迭代时都向myArray发送copy消息,还是Objective-C足够聪明,只执行一次copy,并在整个循环中使用它?


3
非常容易解释。您非常清楚地提出了这个问题! - matt
2
答案是 copy 只会被执行一次。在 in 操作开始之前,右侧的表达式会被求值。 - Hot Licks
请比较 https://dev59.com/-m865IYBdhLWcg3wTcvg 和 https://dev59.com/SmjWa4cB1Zd3GeqPnRcp。 - Martin R
1个回答

5

这并不是“聪明”的问题,而是表达式[myArray copy]在一开始就被评估了一次。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接