最近我一直在为应用程序的乐器进行一些性能分析。这就是我注意到的:
即UIButton帧设置非常慢。
为了排除它是由类型转换(从int到CGFloat)引起的概率,我尝试了以下内容:
我也尝试过:
不,也没多大帮助。
最后但并非最不重要的是,我确保它不是由CGRectMake引起的:
该功能大约被调用650-670次,这使得每帧设置调用大约0.173ms?听起来不错吗?我怎样才能提高性能?
答案 0 :(得分:1)
嗯......我不是百分百确定,但您使用的是具有固定尺寸的按钮类型UIButtonTypeDetailDisclosure
。
尝试只设置它的中心而不是框架。
myDetailButton.center = CGPointMake(12, 12);
而不是......
myDetailButton.frame = CGRectMake(0, 0, 23, 23);
此外,f
不是必需的,而IIRC实际上可能需要比使用时更多的内存。只需使用23
或23.0
代替23.0f
即可。我不得不为此找到一个参考。
修改强>
话虽如此,我刚刚在问题的底部看到了你的时间统计数据。
您在这里看到的百分比是相对的。 0.173毫秒几乎没有时间。
如果不多次运行该功能,您可能会获得更好的性能提升。你正在运行它700次。好多啊!你真的需要多次运行它吗?你甚至不能将那么多按钮同时放在屏幕上。
也许你需要将它们排队?毕竟,您正在使用MKMapView
。