Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIAlertView内存问题_Iphone_Ios_Memory Management_Uialertview_Instruments - Fatal编程技术网

Iphone UIAlertView内存问题

Iphone UIAlertView内存问题,iphone,ios,memory-management,uialertview,instruments,Iphone,Ios,Memory Management,Uialertview,Instruments,我已经创建了一个非常简单的iPhone应用程序,它有一个单一视图和一个带有显示UIAlertView操作的UIButton。 我正在使用以下代码 - (IBAction)showAlert:(id)sender { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitle

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

- (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
,但它仍然显示相同的内存状态和活动对象(高达50000)。但当我按下home(主页)按钮时,应用程序进入后台,你们可以在附加的图像中看到活体和使用的内存减少

问题:

我的代码怎么了

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


为什么我必须到后台释放内存和活动对象?

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

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


当您按下home按钮时,您的应用程序将进入后台,并且作为内存释放的一部分,将强制释放内存。也就是说,缓存被清空,自动释放周期被运行,等等。

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

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


当您按下home按钮时,您的应用程序将进入后台,并且作为内存释放的一部分,将强制释放内存。也就是说,缓存被清空,自动释放周期被运行,等等。

实际上我正在开发另一个应用程序,我正在使用instruments工具进行内存优化,uialertview大大增加了活动对象,并且在按下home按钮之前不会减少使用量。所以我想解决这个问题。我很好奇,所以写了一个小测试程序。在我的测试中,只有第一个UIAlertView增加了内存,没有任何额外的内存。加起来只有25万,所以没什么好担心的。例如,它可能会缓存UIAlertView的背景图像。是的,首先会增加,但无论你在应用程序上花费多少时间,都不会减少。在我的测试应用程序中,第一次UIAlertView显示前的活动字节为670KB(8285个活动对象),显示警报后的活动字节为3.50MB(48000个活动对象)正如我在问题中所说,测试应用程序是一个简单的单视图应用程序,只有一个按钮,但看到我在上面评论中发布的数字,它令人震惊,我不知道如何处理它。我正在使用Xcode 4.6.1和Instrument 4.6在iOS 6.1.3 iPhone 4S上进行测试。实际上,我正在开发另一个应用程序,我正在使用instruments工具进行内存优化,uialertview大大增加了活动对象,在我按下home按钮之前不会减少使用量。所以我想解决这个问题。我很好奇,所以写了一个小测试程序。在我的测试中,只有第一个UIAlertView增加了内存,没有任何额外的内存。加起来只有25万,所以没什么好担心的。例如,它可能会缓存UIAlertView的背景图像。是的,首先会增加,但无论你在应用程序上花费多少时间,都不会减少。在我的测试应用程序中,第一次UIAlertView显示前的活动字节为670KB(8285个活动对象),显示警报后的活动字节为3.50MB(48000个活动对象)正如我在问题中所说,测试应用程序是一个简单的单视图应用程序,只有一个按钮,但看到我在上面评论中发布的数字,它令人震惊,我不知道如何处理它。我正在使用Xcode 4.6.1和Instrument 4.6在iOS 6.1.3 iPhone 4S上进行测试。