iphone - 什么时候值得缓存 UIImage 资源?

标签 iphone objective-c performance uiimage

我一直在做大量的 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/

相关文章:

iphone - 应用程序在设备上运行和安装的时间太长

iphone - 使用社交框架将图像添加到 Facebook

iPhone iOS 使用 UIView animateWithDuration block 执行操作的正确方法是什么?

iphone - 在 iOS 中处理登录和保留 token

ios - 使用 NSAttributedString 更改字符串的颜色和字体

c - 在c中过滤数组的聪明方法

performance - 零成本抽象 : performance of for-loop vs. 迭代器

iphone - 阻止回调崩溃

ios - 静态库和 Swift

performance - SQL Server 2012 中资源监视器的高 CPU 使用率