我有一个标签栏的应用程序。每个选项卡都包含导航控制器,允许用户从一个视图切换到另一个视图,以显示数据的深入信息(每个视图由视图控制器处理,每个视图控制器类具有didReceiveMemoryWarning
方法)。通过从Web服务提取数据来填充列表。
问题:
当我使用“硬件>模拟内存警告” iPhone模拟器的选项,该didReceiveMemoryWarning
方法被称为我的所有视图控制器 - 即使该用户正在观看一个。我不想清除活动视图控制器正在使用的任何内容。我怎样才能做到这一点?
哪些方法应该有实现来重新加载数据后,数据被释放,因为内存警告? (我看到了含有表视图调用viewDidLoad
方法,当用户回来这种看法,但如果视图包含(说UIWebView的),那么viewDidLoad
方法不叫视图控制器类。这是为什么?)
编辑(星期五2009年1月30日 - 下午3点10分)
(注:我使用界面生成器创建视图和loadView
方法被注释掉)
所以,当一个视图控制器接收到内存警告消息,这些是执行的步骤:
调用下面的方法:
- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }
呼叫到
[super didReceiveMemoryWarning]
的结果,[self setView:nil]
就会自动叫什么名字?如果应该清除任何资源,则应该覆盖
setView
方法以清除本地资源。如果视图当前处于活动状态(默认),则不调用[self setView:nil]
。对? - 我很好奇哪种方法需要这个决定,以及如何?
您能否确认一下。另外,我收到了一个错误,下面是这个方法,但是在中加入myObject = nil
后发现dealloc
控制器类的方法修复了这个问题。谢谢。
即使我不重写didReceiveMemoryWarning方法,我的观点被清除。这是为什么? – Mustafa 2009-01-30 05:04:01