调用nil后,iPhone内存不会释放

时间:2011-10-19 01:58:52

标签: iphone memory-leaks uiimageview uiimage didreceivememorywarning

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

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

其中,numberImage是一个UIImageView,控制器是我在scrollview中添加的viewcontroller的一个对象。当页面滚出视图

时,我将图像设置为nil
controller.numberImage.image = nil;

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

提前致谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

各种解决方案都可以解决这类问题......

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

  2. 一次你可以加载3张图像,如果我解释然后加载当前图像,上一张图像和下一张图像。这意味着如果你想看到图像2一次加载三张图像,图像1,图像2,和图像3.当你滚动到下一个图像然后加载图像2,图像3和图像4并解除图像1 ...依此类推...反之亦然加载图像以前的图像加载。

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