0

我遇到了调用 didReceiveMemoryWarning 但未调用 viewDidUnload 的情况。didReceiveMemoryWarning 的文档说:

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

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

这很重要的原因是我已经在 didReceiveMemoryWarning 中释放了一些缓存数据,假设 viewDidLoad 将在重新加载视图时被调用。但是由于 viewDidUnload 没有被调用,所以 viewDidLoad 在再次显示视图时也不会被调用......

4

1 回答 1

0

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

于 2010-09-10T18:22:18.513 回答