UIImage + NSCache与[UIImage imageNamed:]比较

3
我有一个性能问题,如果我使用[UIImage imageWithContentsOfFile:]从磁盘加载JPG图片(是的,我无法在应用中提供任何PNG文件格式),将UIImage存储在全局NSCache中,并在[UITableViewCell drawRect:]中使用缓存的图像。这种方法比使用[UIImage imageNamed:]慢得多。
我已经使用“时间分析”工具分析了性能,如第一张图片所示。[DBArtistTableViewCell drawRect:]总是解码JPEG。 在第二张图片中,使用[UIImage imageNamed:]解决方案时,JPG不会被解压缩。 NSCache + UIImage解决方案:NSCache + UIImage [UIImage imageNamed] 解决方案UIImage imageNamed 简短的问题是:为什么UIImage + NSCache解决方案比[UIImage imageNamed:]解决方案慢,[UIImage imageNamed:]方法有什么奥秘(是的,我知道缓存,但剩下的奥秘是什么)?
感谢您的帮助。
1个回答

3
我认为原因是UIImage imageNamed会导致数据被解压并存储在其缓存中,而UIImage imageWithContentsOfFile会加载压缩的数据,但直到需要显示时才进行解压。

我能否自己解压[UIImage imageWithContentsOfFile]中的UIImage? - CarlJ
1
这个问题的评论区中有一些讨论可能对你有所帮助:https://dev59.com/o3I-5IYBdhLWcg3whIqk - ikuramedia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接