UIImage + NSCache vs. [UIImage imageNamed:]

时间:2012-02-17 10:55:47

标签: iphone ios uitableview uiimage

我有性能问题,如果我加载JPG(是的,我不能在应用程序中提供任何PNG文件格式)来自磁盘[UIImage imageWithContentsOfFile: ]的图像,将UIImage存储在全局NSCache中并使用[UITableViewCell drawRect: ]中的缓存图片。这种方法比用户[UIImage imagedNamed:]慢得多。

如果使用仪器“时间曲线”分析了性能,正如您在第一张图片中看到的那样,JPEG总是在[DBArtistTableViewCell drawRect:]中解码。 在使用[UIImage imageNamed:]解决方案的第二张图片中,JPG不会解压缩。

NSCache + UIImage解决方案: NSCache + UIImage

[UIImage imageNamed]解决方案 UIImage imageNamed

简短的问题是:为什么UIImage + NSCache解决方案比[UIImage imageNamed:]解决方案慢,而[UIImage imageNamed:]方法的魔力是什么(是的,我知道缓存,但其余的魔法是什么?)

帮助帮助。

1 个答案:

答案 0 :(得分:3)

我认为原因是UIImage imageNamed导致数据被解压缩并存储在其缓存中,而UIImage imageWithContentsOfFile加载压缩数据,但在您需要显示它之前不会对其进行解压缩。