为什么在屏幕上绘制图像之前我不会出现内存不足问题?

时间:2010-05-27 00:32:22

标签: iphone memory-leaks drawing uiimage low-memory

我可以将200多个UIImage对象加载到NSMutableDictionary中,而不会出现任何记忆警告问题。

当我开始在屏幕上显示它们时(在显示10-20张图像之后),我得到了低内存警告和最终崩溃。

任何时候都只能显示约8张图像。

在屏幕上实际绘制UIImage需要额外的内存吗?

没有出现任何内存泄漏,我已多次查看泄漏代码。

2 个答案:

答案 0 :(得分:1)

您最初可能创建了一个指向图像的链接,此时实际读取的唯一数据是尺寸和图像类型(简而言之),通常不需要其余数据,直到通常从后台请求过程即显示在屏幕上。当显示实际图像数据从文件路径下载并根据其图像类型解码时,它将被缓存,因此不必再次下载,如果您使用双/三倍,缓存会占用大量内存缓存屏幕外绘图所需的额外内存。 在加载新图像之前尝试处理所有图像数据。

答案 1 :(得分:0)

documentation表示拥有UIImage并不一定意味着图像实际存储在内存中,因为它可以从图像缓存中清除。但它确实说如果你试图绘制它,它将被拉回到内存中。也许它会在它向你发出低内存条件警告之前开始从它的图像缓存中清除。这解释了你所看到的一切。