我想在低内存条件下测试我的应用程序功能,但很难测试.当应用程序在设备上运行而不是模拟器时,如何在我的视图中引发触发didReceiveMemoryWarning方法的低内存警告?或者我可以在这些可能的条件下测试我的应用程序有哪些方法?
我无法使用模拟器的原因是我的应用程序使用游戏中心和邀请不在模拟器上工作.
背景:
我有一个标签栏应用程序.每个选项卡都包含导航控制器,允许用户从一个视图转换到另一个视图,显示数据的向下钻取信息(每个视图由视图控制器处理,每个视图控制器类都有didReceiveMemoryWarning方法).通过从Web服务中提取数据来填充列表.
问题:
当我使用iPhone模拟器的"硬件>模拟内存警告"选项时,didReceiveMemoryWarning将为所有视图控制器调用该方法 - 即使是用户正在查看的控制器.我不想清除活动视图控制器正在使用的任何内容.我怎样才能做到这一点?
由于内存警告,在数据发布后,哪种方法应该重新加载数据?(我看到viewDidLoad当用户返回到该视图时,包含表视图调用方法的视图控制器类,但如果视图包含(比如UIWebView),viewDidLoad则不调用方法.为什么会这样?)
编辑(2009年1月30日星期五 - 03:10 PM)
(注意:我正在使用"界面"构建器来创建视图,并且loadView方法已被注释掉.)
因此,当视图控制器收到内存警告消息时,这些是执行的步骤:
以下方法称为:
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
Run Code Online (Sandbox Code Playgroud)由于调用[super didReceiveMemoryWarning],[self setView:nil]自动调用?
如果应清除任何资源,setView则应覆盖方法以清除本地资源.
[self setView:nil]如果视图当前处于活动状态,则不会调用(默认情况下).对? - 我真的很好奇哪种方法可以做出这个决定以及如何做出决定?
可以请你确认一下.另外,我在这种方法myObject = nil后遇到错误,但myObject在dealloc控制器类的方法中释放后添加修复了问题.谢谢.