【发布时间】:2013-04-26 14:02:34
【问题描述】:
以下哪个更快,为什么?
CGFloat sum = 0;
for (UIView *v in self.subviews)
sum += v.frame.size.height;
或
CGFloat sum = [[self.subviews valueForKeyPath:@"@sum.frame.size.height"] floatValue];
【问题讨论】:
-
我怀疑您会注意到少于 100 个子视图的显着差异。对于大型数组,我在这里做了类似的比较:stackoverflow.com/a/15931719/1187415,结果证明快速枚举是最快的。
-
为什么不自己试试呢?应该很容易调查......我个人会选择更具可读性的解决方案。
-
@Andrea:快速枚举不会启动多个线程,但您可以将 block enumeration 与 NSEnumerationConcurrent 选项一起使用(也在此处测试:stackoverflow.com/a/15931719/1187415,对不起促销:-)
-
@MartinR 是的,但是是否建议在主线程之外访问 UI 元素,即使它只是为了获得它们的高度?
-
这里真的有性能问题吗?如果是这样,您确定这不是架构问题吗?
标签: iphone ios objective-c ipad kvc