UIImage + NSCache 与 [UIImage imageNamed:]
Posted
技术标签:
【中文标题】UIImage + NSCache 与 [UIImage imageNamed:]【英文标题】:UIImage + NSCache vs. [UIImage imageNamed:] 【发布时间】:2012-02-17 10:55:46 【问题描述】:我有一个性能问题,如果我从磁盘加载 JPG(是的,我无法在应用程序中提供任何 PNG 文件格式)图像[UIImage imageWithContentsOfFile: ]
,将 UIImage 存储在全局 NSCache 中并使用缓存图片在[UITableViewCell drawRect: ]
。这种方式比用户[UIImage imagedNamed:]
慢很多。
如果使用仪器“时间配置文件”分析了性能,并且如您在第一张图片中看到的那样,JPEG 总是在[DBArtistTableViewCell drawRect:]
中解码。
在带有[UIImage imageNamed:]
解决方案的第二张图片中,JPG 不会解压缩。
NSCache
+ UIImage
解决方法:
[UIImage imageNamed]
解决方案
简短的问题是:为什么UIImage
+ NSCache
解决方案比[UIImage imageNamed:]
解决方案慢,[UIImage imageNamed:]
方法的魔力是什么(是的,我知道缓存,但其余的是什么?魔法) ?
感谢您的帮助。
【问题讨论】:
【参考方案1】:我相信原因是UIImage imageNamed
导致数据被解压缩并存储在它的缓存中,而UIImage imageWithContentsOfFile
加载压缩数据,但直到您需要显示它时才解压缩。
【讨论】:
有没有办法自己从[UIImage imageWithContentsOfFile]解压UIImage? cmets 中有一些关于这个问题的讨论可能会对您有所帮助:***.com/questions/1815476/…以上是关于UIImage + NSCache 与 [UIImage imageNamed:]的主要内容,如果未能解决你的问题,请参考以下文章
NSCache UIImage 数据从 oneViewController 传递到 anotherViewController