【问题标题】:Why does Apple recommend us to not invoke viewWillLoad, viewWillAppear, viewDidDisappear, etc.?为什么 Apple 建议我们不要调用 viewWillLoad、viewWillAppear、viewDidDisappear 等?
【发布时间】:2017-02-27 04:42:19
【问题描述】:

我正在按照书中的练习进行操作,我们正在以编程方式构建视图控制器并创建单元测试。这本书也这么说,根据以前阅读 Apple 参考文档的经验,Apple 参考总是说不要直接调用 viewDidLoad、viewWillAppear、viewDidDisappear 等。我很想知道为什么会这样,如果我们这样做会发生什么?

【问题讨论】:

  • 阅读这些方法的文档。阅读视图控制器的生命周期。它们由框架调用。它们不应该被直接调用。
  • 这不是建议。这是法律。
  • 有一种理论指出,如果有人直接调用 viewWillAppear,宇宙将立即消失,取而代之的是更加奇异和莫名其妙的东西。
  • @T.BenjaminLarsen 我明白了,其中一个不问不说问题的类型。我仍然对此感到好奇并想尝试一下,但如果它会使我的计算机崩溃或结束宇宙,那么我会遵守。有时我确实觉得自己像辛普森一家中的伯恩斯先生,如果没有人能解释这个黑洞中发生了什么,我想“释放猎犬”。

标签: ios viewdidload viewwillappear


【解决方案1】:

viewDidLoadviewWillAppearviewDidDisappear 等等是运行时让您知道某些重要事情正在发生的方式:

  • viewDidLoad,视图控制器刚刚获得了它的视图

  • viewWillAppear,视图控制器的视图即将放入界面

  • viewDidDisappear,视图控制器的视图即将从界面中移除

这些是运行时负责的事件,它会向您发送消息,让您知道它们正在发生,以便您可以根据需要在适当的时候做出响应。

调用它们是没有意义的,因为你不知道这些事情何时发生(除非运行时调用它们)!如果你在某个任意时刻打电话给他们,你就会撒谎,例如说视图刚刚加载,而实际上它没有刚刚加载,因此您会破坏自己的代码或更糟。

【讨论】:

    猜你喜欢
    • 2011-11-28
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2012-06-12
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    相关资源
    最近更新 更多