繁体   English   中英

在iOS上的内存中缓存图像,更小的是:UIImage或NSData对象?

[英]Caching images in memory on iOS, what is smaller : a UIImage or NSData object?

我正在iOS上进行图像缓存。 图像从URL下载并作为UIImage存储在NSDictionary中(我不想或不需要“在磁盘上”缓存)。

问题是:我应该将图像存储在我的字典中作为UIImage还是NSData? 哪一个在记忆方面明显更小?

UIImage具有自动响应低内存情况和释放缓存表示的优化。 UIImage参考:

在内存不足的情况下,可以从UIImage对象中清除图像数据以释放系统上的内存。 此清除行为仅影响UIImage对象内部存储的图像数据,而不影响对象本身。 当您尝试绘制其数据已被清除的图像时,图像对象会自动从其原始文件重新加载数据。 然而,这个额外的负载步骤可能会导致很小的性能损失。

一般来说,您应该将图像数据保留在UIImage

如果您可以根据需要重新获取图像,则应考虑使用NSPurgeableData或您自己的图像 对象,以及NSCache而不是NSDictionary 存储在其中的NSCache特别好的内存可以由操作系统自动释放,即使您被暂停,也可以避免在后台被终止。 UIImage已经为你做了很多这样的事情,但NSCache允许你释放所有数据而不仅仅是未压缩的数据。

NSData较小,因为它存储图像的压缩版本。 但是解压缩需要时间 ,所以只要内存允许,如果你收到内存警告就缓存UIImage并清理缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM