iPhone-如何处理内存不足的问题
当应用程序收到内存不足警告消息时,可能会发生3种情况:iPhone-如何处理内存不足的问题,iphone,objective-c,memory-management,didreceivememorywarning,viewdidunload,Iphone,Objective C,Memory Management,Didreceivememorywarning,Viewdidunload,当应用程序收到内存不足警告消息时,可能会发生3种情况: 您的应用程序刚刚启动,用户没有做任何特殊操作 应用程序正在运行,并且存在当前上下文 该应用程序位于后台,具有一些运行上下文 所以当你收到这条信息,你应该释放内存。。。但是在哪里呢?怎么做 我明白: initWith。。。。。必须设置默认的静态值 viewDidLoad必须加载任何非静态对象 didReceiveMemoryWarning必须释放这些非静态对象 我不知道在viewDidUnload中可以/必须做什么 我猜某些保留值必须在某个地
initWith
。。。。。必须设置默认的静态值李>
viewDidLoad
必须加载任何非静态对象didReceiveMemoryWarning
必须释放这些非静态对象viewDidUnload
中可以/必须做什么谢谢您的帮助。我的想法是,当应用程序收到内存不足警告时,会调用两种方法:
didReceiveMemoryWarning // in your NSObjects
及
然后,如果您想释放内存,这些是要考虑的方法。
关于你在那里能做什么。。。好。。。 想想Xcode的建议:- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
/*
Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
*/
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
看起来,最好的选择是释放用户看不到和/或未使用的任何对象,或者释放您以后可以重新创建的任何缓存数据。
不要触摸你的GUI:如果你关闭它或它的一部分,你的应用程序将无法使用,用户会失望
关于您的两个场景,我认为在考虑内存警告的用途时可能存在错误。
它们是一种处理紧急情况的方法,而不是管理内存的正常方法。
开发人员必须考虑良好的内存体系结构,并尽可能保存数据
在场景1中,将应用程序发送到后台时保存数据
applicationDidEnterBackground
在场景2中,打开新视图时保存数据
希望这是有意义的…考虑您的场景的替代方案。如果你的应用程序没有释放足够的内存,它可能会被杀死,这对用户来说会更加不和谐。人们可能会选择潜在地闪烁当前显示,而不是丢失用户有价值的数据。在我的情况下,最好是在闪烁时关闭应用程序。我没有用户数据,但是ap生成的内容。最好是这些内容丢失,而不是以非平稳的方式生成。
applicationDidEnterBackground