viewDidLoad、viewWillAppear 在 App Force Quit 上调用

viewDidLoad, viewWillAppear called on App Force Quit

我的应用程序生命周期函数 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 行崩溃,这是有道理的,因为应用程序正在从内存中删除,同时出于某种原因尝试 access/set 值。

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

提前谢谢你..

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

这为我解决了崩溃问题。