我创建了一个非常简单的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];
}
附加了仪器分配工具屏幕截图。
在图片中,低内存分配显示应用运行时没有显示UIAlertView
,高峰显示我显示UIAlertView
后的内存使用情况,即使我已解除UIAlertView
并释放它但它继续显示相同的内存状态和生命对象(高达50,000)。但当我按下主页按钮应用程序进入后台,你可以看到附加图像生活对象和使用内存减少。
问题:
我的代码出了什么问题?
为什么即使在发布UIAlertView
之后它也会显示高内存分配和活动对象?
为什么我必须去背景释放记忆和生物?
答案 0 :(得分:1)
我不会太担心它,除非这是你的应用程序中的主要内存瓶颈,或者除非每个UIAlertView累积增加更多内存。
您的代码是正确的。但即使您发布了UIAlertView,用户界面系统也会保留它,至少在您关闭警报之前。除了UIAlertView本身,它还分配显示警报所需的图形资源。关闭警报后,它取决于autorelease循环何时启动,以及缓存参数,是否以及何时释放内存。
当您按下主页按钮时,您的应用程序将转到后台,并且作为内存释放的一部分被强制释放。也就是说,缓存是空的,自动释放循环运行等等。