关于iPhone 4.0 / IPad上的UIImageView的内存问题

时间:2010-08-23 15:11:38

标签: ipad ios4

我的应用程序因内存不足而崩溃[收到内存警告级别1 + 2]

为了追踪这一点,我使用了仪器,并提出以下几点

测试环境:在Window

上添加了单视图控制器
  1. 当我不使用UIImageView Real Memory时使用3.66 MB

  2. 当我使用大小为25 KB的图像的UIImageView时:使用4.24 MB的真实内存。与w / o UIImageView相比,它几乎增加了560 KB,并且随着我在视图上添加更多UIImageview而不断添加。

  3. 下面的

    是用于添加我正在引用的UIImageview的示例代码

    UIImageView* iSplashImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-Landscape.png"]];
    iSplashImage.frame = CGRectMake(0, 0, 320, 480);
    [self.window addSubview:iSplashImage];
    

    的dealloc

    if(iSplashImage)
    {
      [iSplashImage release];
      iSplashImage = nil;
    }
    

    问题是560 KB未获得发布,并且在一段时间后应用程序收到内存不足警告。

    如果我遗失某些东西或做其他事,任何人都可以指出。由于我的应用程序在一个会话中使用了大量图像。

    先谢谢,

    Sagar的

2 个答案:

答案 0 :(得分:1)

你是在调用[iSplashImage removeFromSuperview]还是像这样? 图像需要比文件更多的内存,因为它在内存中解压缩 - 320x480x4 = 600Kb

答案 1 :(得分:0)

if(iSplashImage)
{
  [iSplashImage release];
  iSplashImage = nil;
}

不是你的问题,但我很确定[iSplashimage release];在一行中完成所有这些。如果iSpashImage = nil,则消息将评估为非proc。那时的iSplashImage只是一个指针,所以无论它是否为零都没有内存影响。