我的应用程序因内存不足而崩溃[收到内存警告级别1 + 2]
为了追踪这一点,我使用了仪器,并提出以下几点
测试环境:在Window
上添加了单视图控制器当我不使用UIImageView Real Memory时使用3.66 MB
当我使用大小为25 KB的图像的UIImageView时:使用4.24 MB的真实内存。与w / o UIImageView相比,它几乎增加了560 KB,并且随着我在视图上添加更多UIImageview而不断添加。
是用于添加我正在引用的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的
答案 0 :(得分:1)
你是在调用[iSplashImage removeFromSuperview]还是像这样? 图像需要比文件更多的内存,因为它在内存中解压缩 - 320x480x4 = 600Kb
答案 1 :(得分:0)
if(iSplashImage)
{
[iSplashImage release];
iSplashImage = nil;
}
不是你的问题,但我很确定[iSplashimage release];
在一行中完成所有这些。如果iSpashImage = nil,则消息将评估为非proc。那时的iSplashImage只是一个指针,所以无论它是否为零都没有内存影响。