Iphone 调用didReceiveMemoryWarning时向用户生成警报
我见过一些应用程序在检测到内存不足时会发出警告。我尝试在我的应用程序中执行此操作,但遇到了问题。使用模拟器模拟内存警告,生成的警报会在我点击“ok”之前弹出两次,然后再弹出9次,直到最后消失 在调用didReceiveMemoryWarning时生成警报是个坏主意吗 如果没有,有没有比下面更好的方法Iphone 调用didReceiveMemoryWarning时向用户生成警报,iphone,objective-c,ios-simulator,Iphone,Objective C,Ios Simulator,我见过一些应用程序在检测到内存不足时会发出警告。我尝试在我的应用程序中执行此操作,但遇到了问题。使用模拟器模拟内存警告,生成的警报会在我点击“ok”之前弹出两次,然后再弹出9次,直到最后消失 在调用didReceiveMemoryWarning时生成警报是个坏主意吗 如果没有,有没有比下面更好的方法 - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Release any cache
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
...
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Warning"
message:@"Your device is low on memory..."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
谢谢
菲尔一般来说,你不应该通知用户内存不足。毕竟,他们能做什么?您的应用程序是前台应用程序,它(除了苹果应用程序)正在消耗设备的大部分内存。当用户看到内存消息时,他们将做什么
当您收到内存不足通知时,您应该只关注释放内存,而不需要用户交互。据我所知,您很可能会在应用程序崩溃(或被杀死)之前收到此通知。如果你设法释放内存,应用程序可能会存活(但不能保证) 可能有一些合法的用例。因为这通常是崩溃的前奏,所以您可能需要警告用户这一点。这可能会以消息的形式出现,如:“您的设备内存不足。因此,此应用程序可能会意外退出。如果问题仍然存在,请尝试关闭并再次打开手机电源”。假设一切正常,这不应该出现-因此如果出现,您可能需要一些警告 这在越狱手机上可能更为常见,流行的“backgrounder”应用程序允许应用程序在后台运行(通常直到出现这种情况——在这种情况下,应用程序被强制退出——参见注释)
解决事件连续触发11次的问题。。您可以限制弹出窗口。例如:显示时,存储自历元以来的秒数。然后-在再次显示之前,检查是否经过了一定的时间。获取内存警告是一个严重的问题,任何开发移动应用程序的开发人员都不能忽视这一点。在类的didReceiveMemoryWarning方法中,应该始终释放占用大部分内存的变量 向用户显示此应用程序正在消耗大量内存的警告是没有用的,因为这不关他们的事,他们可以做什么。相反,你应该关注如何在没有用户交互的情况下减少内存消耗
您描述的用例正是我试图实现的。我有一些越狱手机的用户写到我的应用程序崩溃了。如果可用内存是个问题,我想让他们知道。我按照您的建议,将警报从每个视图控制器中的didReceiveMemoryWarning移动到发生速率限制的应用程序代理中的常用方法,从而对警报进行速率限制。(我没有意识到我收到重复警报的原因是由于didReceiveMemoryWarning在所有视图控制器中同时触发,直到我做出更改。)谢谢!