代码之家  ›  专栏  ›  技术社区  ›  Jesse Anderson

是否已调用ReceiveMemoryWarning但未调用viewDidUnload?

  •  0
  • Jesse Anderson  · 技术社区  · 15 年前

    我遇到了这样一种情况:调用了didReceiveMemoryWarning,但调用了viewDidUnload。didReceiveMemoryWarning的文件说:

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

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

    1 回复  |  直到 15 年前
        1
  •  0
  •   Noah Witherspoon    15 年前

    控制器的视图确实有一个superview,即使它承载一个模态视图控制器(毕竟,该控制器的视图最终是表示它的控制器的视图的子视图),因此它的视图不会被卸载。我建议您在 -viewWillAppearAnimated: .