didReceiveMemoryWarning被调用但不是viewDidUnload?

时间:2010-09-10 18:06:48

标签: iphone memory-management didreceivememorywarning

我遇到的情况是调用didReceiveMemoryWarning,但是没有调用viewDidUnload。 didReceiveMemoryWarning的文档说:

  

此方法的默认实现检查视图控制器是否可以安全地释放其视图。如果视图本身没有超级视图,并且可以从nib文件或使用自定义loadView方法重新加载,则可以执行此操作。如果可以释放视图,则此方法将释放它并调用viewDidUnload方法。

视图控制器当时不可见,但它是模态的父级(通常在发出内存警告时位于图像选择器下)。看起来该视图应该能够发布,但也许我错过了一些东西。

重要的原因是我在didReceiveMemoryWarning中发布了一些缓存数据,假设在重新加载视图时将调用viewDidLoad。但是当没有调用viewDidUnload时,再次显示视图时viewDidLoad也都没有被调用...

1 个答案:

答案 0 :(得分:0)

控制器的视图确实有一个超级视图,即使它正在托管一个模态视图控制器(毕竟,该控制器的视图最终作为控制器呈现它的子视图),因此它的视图不会被卸载。我建议您在-viewWillAppearAnimated:

中再次提取缓存数据