【问题标题】:Why do I not get low memory issues until images are draw on the screen?为什么在屏幕上绘制图像之前不会出现内存不足的问题?
【发布时间】:2010-05-27 00:32:21
【问题描述】:

我能够将 200 多个 UIImage 对象加载到 NSMutableDictionary 中,而不会出现任何内存警告问题。

当我开始在屏幕上显示它们时(大约显示 10-20 张图像后),我收到内存不足警告并最终崩溃。

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

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

没有出现内存泄漏,我已经多次检查代码是否存在泄漏。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢。我想知道 UIImage 对象的内部数据是如何被清除的。看起来我正在从屏幕上删除的图像会在内部被清除,即使我可能会收到内存警告,我最终也不会崩溃。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 2020-05-24
      • 2013-12-14
      • 1970-01-01
      相关资源
      最近更新 更多