【问题标题】:viewDidLoad, viewWillAppear called on App Force QuitviewDidLoad, viewWillAppear 在 App Force Quit 上调用
【发布时间】:2022-01-14 13:33:19
【问题描述】:

我的应用程序生命周期函数 viewDidLoad 和 viewWillAppear 有问题。在我强行退出之前,我的应用程序几乎不会崩溃。我做了一些调试,问题似乎是,退出时,方法 viewDidLoad 和 viewWillAppear 在我强制退出应用程序后立即被调用。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    
    print("STARTSCREEN WILL APPEAR")
    
    UserDefaults.standard.set(90, forKey: "user_profile_current_xp")
    UserDefaults.standard.set(0, forKey: "user_profile_previous_level_xp")
    UserDefaults.standard.set(0, forKey: "user_profile_next_level_xp")
    UserDefaults.standard.set(0, forKey: "user_profile_player_level")
    
    updateLevelLabel()
    checkMenuItemLockStatus()
}

由于 EXC_BAD_ACCESS 异常,应用程序在 UserDefaults 行直接崩溃,这是有道理的,因为由于某种原因试图访问/设置值时,应用程序正在从内存中擦除。

我认为如果在强制退出应用程序时不会调用 viewDidLoad/Appear,则不会出现问题。这对我来说没有任何意义,我不记得以前在其他应用程序中遇到过类似的问题。我是否遗漏了什么,关闭应用程序时什么会触发这些方法?

提前谢谢你..

【问题讨论】:

  • 您是说您的应用在您强制退出后下次启动时崩溃?如果您强制退出该应用程序,我预计会崩溃;您基本上是在发送 SIGKILL。您在哪里/如何看到崩溃?
  • “退出时”你不应该在 iOS 中这样做。
  • @ElTomato 你知道,人们会这样做——不管是否应该——所以你需要考虑一下。由于它是“滑动关闭”打开的应用程序的操作系统功能,因此 Apple 的意图非常好
  • @Paulw11 通常退出应用程序确实会终止 XCode 的信号,但不会在终止信号之前设置断点和错误的访问异常。崩溃仅出现在 XCode 中,执行停止并将特定行标记为红色

标签: ios swift xcode lifecycle


【解决方案1】:

当我从项目中删除 SceneDelegate 时,应用程序停止崩溃。我必须从 Info.plist 中删除它,编辑 AppDelegate(向其中添加 var 窗口)并从中删除场景特定的功能。

这为我解决了崩溃问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2011-10-12
    • 2010-10-28
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多