![]() |
1
1
此时,您最好的选择是使用Shark来尝试在代码中找到瓶颈。苹果有一个“ Performance Tuning Your Application with Shark “(iTunes链接)如果你以前从未使用过鲨鱼,它会带你穿过鲨鱼。不过,我认为你必须是99美元iPhone开发者计划的一员才能看到它。 |
![]() |
2
6
您的分析数据强烈地表明瓶颈在于您的PNG图像的解包。我猜58.5%的CPU时间都花在了解包PNG数据上(例如,如果加载中也包含memcpy调用)。可能更多的时间花在了那里,但是没有更多的数据很难说。我的建议是:
只有当你在这之后仍然有性能问题时,我建议你研究一下缩放,例如,为视网膜加载“.'.'.'.'.@2x.png”图像。祝你好运! |
![]() |
3
4
[uiimage imagewithdata:]不缓存。 这意味着每次传入该数据源方法时,Coregraphic都会解压缩并处理您的图像。 我会将您的艺术家对象更改为保留uiimage而不是nsdata。如果你经常收到的话,你可以在记忆学习中刷新图像。 另外,我不建议在数据源调用中使用setNeedsDisplay,我将在您的单元中使用它。 setNeedsDisplay不是对drawRect的直接调用: 它只告诉操作系统在运行循环结束时再次绘制uiview。可以在同一个runloop中调用setNeedsDisplay 100次,操作系统只调用一次drawRect方法。 |
![]() |
4
1
如果延误发生在
|
![]() |
5
1
我的猜测是延迟来自于在核心数据中存储图像。核心数据通常不是存储大量数据块的好方法。
更好的解决方案是将图像存储为磁盘上的单个文件,使用相册ID标识每个图像。然后,您将设置一个内存缓存,将图像存储在RAM中,以便快速加载到
附录1
如果你只是打电话
另一个需要考虑的问题是
|