代码之家  ›  专栏  ›  技术社区  ›  leon

uitabviewcontroller内存管理

  •  0
  • leon  · 技术社区  · 17 年前

    我有一个应用程序,它由从uitabbarcontroller派生的类管理的多个选项卡组成(我子类uitabbarconteroller的唯一原因是处理所有视图的shake事件)。3个视图来自子类uiviewcontentroller类,一个视图是uinavigationcontroller,它显示一个表。 在我拥有的每个控制器中,包括我的子类控制器,我都有:

    • (无效)没有收到备忘录警告{ //如果视图没有超视图,则释放该视图。 [超级didivememorywarning];

    应用程序工作得很好。我的问题是uitabbarcontroller的默认实现如何在内存不足的情况下处理自动视图卸载。

    只有控制器从uinavigationcontroller自动卸载(我看到调用了viewdidunload)。对于由uitabbarcontroller管理的任何其他视图控制器,都不调用viewdidunload。

    为什么?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  0
  •   Paul Shapiro    15 年前

    当视图控制器的视图被移除和解除分配时,将调用viewdidunload,这将在vc收到didreceivememorywarning后发生。检查是否首先调用该方法。如果没有调用它,则会发生其他事情,但如果正在调用它,则可能是您的视图被过度保留或未正确删除。