UIAlertView内存问题

时间:2013-04-15 07:30:04

标签: iphone ios memory-management uialertview instruments

我创建了一个非常简单的iPhone应用程序,具有单一视图和带有动作的UIButton来显示UIAlertView。 我正在使用以下代码

- (IBAction)showAlert:(id)sender {
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
     [alert show];
     [alert release];
}

附加了仪器分配工具屏幕截图。 enter image description here

在图片中,低内存分配显示应用运行时没有显示UIAlertView,高峰显示我显示UIAlertView后的内存使用情况,即使我已解除UIAlertView并释放它但它继续显示相同的内存状态和生命对象(高达50,000)。但当我按下主页按钮应用程序进入后台,你可以看到附加图像生活对象和使用内存减少。

问题:

我的代码出了什么问题?

为什么即使在发布UIAlertView之后它也会显示高内存分配和活动对象?

为什么我必须去背景释放记忆和生物?

1 个答案:

答案 0 :(得分:1)

我不会太担心它,除非这是你的应用程序中的主要内存瓶颈,或者除非每个UIAlertView累积增加更多内存。

您的代码是正确的。但即使您发布了UIAlertView,用户界面系统也会保留它,至少在您关闭警报之前。除了UIAlertView本身,它还分配显示警报所需的图形资源。关闭警报后,它取决于autorelease循环何时启动,以及缓存参数,是否以及何时释放内存。

当您按下主页按钮时,您的应用程序将转到后台,并且作为内存释放的一部分被强制释放。也就是说,缓存是空的,自动释放循环运行等等。