【问题标题】:iPhone memory doesnt free up after calling nil调用 nil 后 iPhone 内存没有释放
【发布时间】:2011-12-10 13:45:23
【问题描述】:

我正在使用 Apple 的 ScrollingSuite 来显示带有大量大图像的大型滚动视图。(768 x1024)图像视图的图像由

设置
controller.numberImage.image = [self.contentList objectAtIndex:page]; 

其中,numberImage 是一个 UIImageView,而控制器是我在滚动视图中添加的 viewcontroller 的一个对象。当页面滚动到视图之外时,我将图像设置为 nil

controller.numberImage.image = nil;

但问题是我的应用程序在滚动图像时内存不足,收到内存警告。每次显示新图像时,我都可以看到仪器工具(Memory Tag 70)中的内存增加,谷歌搜索结果显示为 ImageIO。请帮我解决这个问题

提前致谢

【问题讨论】:

  • 你认为 self.contentList 会在内存中保留图像的引用吗?应该释放每个引用以释放对象。

标签: iphone memory-leaks uiimageview uiimage didreceivememorywarning


【解决方案1】:

尝试删除 imageView ([controller.numberImage removeFromSuperview];),然后在它即将出现之前将其添加回来 ([controller addSubview:[[UIImageView alloc] initWithImage:[self.contentList objectAtIndex:page]]];) 可能吗?

【讨论】:

    【解决方案2】:

    各种各样的解决方案可以解决这样的问题......

    1. 我认为您可以像[controller.numberImage removeFromSuperview] 这样删除图像视图,并在需要UImageView 时再次分配图像。它可以是第一个解决方案。

    2. 如果我解释一下,您一次可以加载 3 张图片,然后加载当前图片、上一张图片和下一张图片。这意味着如果您想查看图片 2 一次加载三张图片、图片 1、图片2,和图像 3。当您滚动到下一个图像时,然后加载图像 2、图像 3 和图像 4 并释放图像 1……等等……反之亦然,用于加载图像之前的图像加载。

    3. 最糟糕的解决方案是在不改变图像大小的情况下尝试降低图像分辨率。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 2011-07-18
      • 2017-06-07
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多