我遇到了调用 didReceiveMemoryWarning 但未调用 viewDidUnload 的情况。didReceiveMemoryWarning 的文档说:
此方法的默认实现检查视图控制器是否可以安全地释放其视图。如果视图本身没有超级视图并且可以从 nib 文件或使用自定义 loadView 方法重新加载,则这是可能的。如果可以释放视图,则该方法将其释放并调用 viewDidUnload 方法。
视图控制器当时不可见,但它是模态的父级(通常在发出内存警告时位于图像选择器下)。看起来视图应该能够被释放,但也许我错过了一些东西。
这很重要的原因是我已经在 didReceiveMemoryWarning 中释放了一些缓存数据,假设 viewDidLoad 将在重新加载视图时被调用。但是由于 viewDidUnload 没有被调用,所以 viewDidLoad 在再次显示视图时也不会被调用......