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

为什么调用viewdidUnload的频率低于viewdidLoad?

  •  10
  • ohho  · 技术社区  · 14 年前

    我放 NSLog(@"%@::%@", [[self class] description], NSStringFromSelector(_cmd)); 在两者 viewDidLoad viewDidUnload 视图控制器的。

    在日志中,我发现 可视负载 被称为比 可视负载 当应用程序在不同的.nibs之间移动时。

    为什么?

    3 回复  |  直到 14 年前
        1
  •  18
  •   vodkhang    14 年前

    viewdidLoad和viewdidUnload彼此不对应。

    只有在收到内存警告时才会调用viewdidunload。然后系统将自动调用您的viewdidUnload。

    在正常情况下,当您按下MyViewController并将其弹出时。生命周期的发生方式如下:

    init
    
    viewDidLoad
    
    release
    

    这意味着,无论何时初始化和推送/呈现视图,都将调用viewdidload。但当您弹出视图时,在正常情况下将调用释放,在内存警告情况下将调用viewdidUnload。

    这是相当含蓄的,苹果没有在指南上清楚地说明。以下是一些参考资料: Load and Unload cycle

        2
  •  1
  •   Thomas Müller    14 年前

    我想在这种情况下 -viewDidUnload 没有调用,视图控制器被释放。

    1. VIEWDIDLOAD:控制器加载视图
    2. viewdidUnload:内存警告,控制器卸载视图
    3. VIEWDIDLOAD:控制器再次加载视图
    4. -:控制器被释放,不显式卸载视图

    你加上2 -viewDidLoad 调用和1个“-viewdidunload”调用。

    也可以放一个 NSLog 进入 -dealloc 方法并查看 -DELOLLC -视图加载 组合的呼叫与 视图加载 电话。

        3
  •  0
  •   nico    14 年前

    加载新视图时,仍可以在后台加载旧视图。 你在搜索的视图将显示为Conterpart,我想。

    视图仅在存储警告的情况下卸载。