我一直在做大量的 iPhone UI 工作,这些图像文件在单个 View 或整个应用程序的多个 View 中的多个位置使用。在某些情况下,我会绘制新图标,通常是合成 2 个小图像(每个小于 4 KB)。
我考虑过一些关于优化图像加载的问题,但我不确定最佳做法是什么。我猜想保存任何使用 CG 功能创建或更改的图像是值得的。对于未更改的图像,从 bundle 中加载图像的开销是多少?
UIImage* image = [UIImage imageNamed:@"myImage.png"]
考虑到移动设备的内存限制,在考虑缓存图像时哪些因素最为重要?图像的大小、可能缓存的图像总数以及单个图像的加载次数浮现在脑海中。
最佳答案
在 WWDC (2011) 的最新性能 session 中,Apple 不建议在大多数情况下缓存图像。他们建议您仅在性能分析后知道一个事实时才缓存图像,您需要提前缓存图像,因为您没有时间将它们从磁盘加载并解码。在大多数情况下,您可能负担得起。
他们特别指出,正如@Till 所做的那样,+[UIImage imageNamed:]
会在您的进程的生命周期内缓存图像,因此他们建议使用非缓存加载方法,例如 +[UIImage imageWithContentsOfFile:]
原因是内存在 iOS 设备上是一种受限资源,所以如果缓存图片,很可能会导致系统内存压力,以及应用程序被 jetsammed。由于 iOS 5 jetsams 应用程序首先使用更多内存,如果您正在缓存一堆 UIImages,您将使您的应用程序更有可能被 jetsammed。
关于iphone - 什么时候值得缓存 UIImage 资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712863/