1

我创建了一个非常简单的 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它之后显示高内存分配和活动对象?

为什么我必须去后台释放内存和活物?

4

1 回答 1

1

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

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

当您按下主页按钮时,您的应用程序将进入后台,并作为该内存释放的一部分被强制执行。即清空缓存,运行自动释放周期等。

于 2013-04-15T10:22:12.273 回答