【问题标题】:ViewDidLoad() method called every time in xCode 9.4 and iOS 11在 xCode 9.4 和 iOS 11 中每次调用 ViewDidLoad() 方法
【发布时间】:2018-08-18 05:47:00
【问题描述】:

每当我们 presentpushSourceViewControllerDestinationViewController 时,ViewDidLoad() 方法在 DestinationViewController 中每次在 xCode 9.4iOS 11 或更高版本中调用。当我们从DestinationViewController 弹出或关闭到SourceViewController 时,viewDidLoad() 方法不会被调用。

【问题讨论】:

  • 查看 viewDidLoad 在创建 VC 对象时只调用一次。每次创建新的 VC 对象时都会调用它。
  • viewDidLoad 在弹出或关闭时不应该被调用,所以行为是正确的
  • @vivekDas,调试并检查 ViewDidLoad() 调用而不创建任何对象。如果项目很大并且每次都调用方法,那么我们就会遇到内存和加载问题。所以我想解决这个问题。
  • 在不创建和显示 VC 的情况下调用 ViewDidLoad 是不可能的。你正在检查有什么问题。检查下面的文章。 roadfiresoftware.com/2015/01/…
  • @vivekDas viewDidLoad 不应该在每次出现或推送时都被调用,第一次应该调用,但不是每次都调用。就我而言,它每次都会被调用。在 xCode 8 和 iOS 10 中不是每次都调用它,但现在在 xCode 9.4 和 iOS 11 中它每次都调用。

标签: ios iphone swift xcode xcode9.4


【解决方案1】:

ViewDidload 方法仅在视图第一次加载时调用。当您呈现或推送它时,它会加载视图,因此它会调用 viewdidload。但是当你弹出它时释放视图。

【讨论】:

    【解决方案2】:

    这是UIViewController 的生命周期。

    • ViewDidLoad - 创建类并从 xib 加载时调用。 (存在或推送)此方法调用初始设置并且仅调用一次。
    • ViewWillAppear - 在您的视图出现之前调用,每次您的视图即将出现在屏幕上时都会调用它。
    • ViewDidAppear - 在视图出现后调用 - 开始的好地方 动画或从 API 加载外部数据。当视图出现在屏幕上时,这也将在每次ViewWillAppear 之后调用。
    • ViewWillDisappear/DidDisappear - 仅在视图即将关闭或弹出时与 ViewWillAppear/ViewDidAppear 相同。
    • ViewDidUnload/ViewDidDispose - 在 Swift 或 Objective C 中,这就是你要做的 你清理和释放东西,但这是自动处理的 所以你真的不需要在这里做太多事情。

    详情请阅读 Apple documentation

    【讨论】:

      猜你喜欢
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多