SceneDelegate.init() 在终止应用程序时被调用

问题描述 投票:0回答:0

我的应用程序出现了一些奇怪的行为。有时,当用户终止应用程序时,会再次调用 SceneDelegate.init() 和 scene(_:willConnectTo:options:) ,这会导致再次运行应用程序初始化流程。这会导致一些意外行为和应用程序崩溃。

应用代理:

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        return true
    }
...
}

场景代理:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?

    override init() {
        super.init()

        print("Init")
    }

    func scene(_ scene: UIScene, willConnectTo _: UISceneSession, options: UIScene.ConnectionOptions) {
        guard let scene = (scene as? UIWindowScene) else {
            return
        }

        print("App starting")

        ...
    }
}

我的堆栈跟踪看起来像这样(杀死应用程序后):

会不会是 iOS 中的一些错误,或者我这边有问题?

谢谢。

ios swift crash uiapplicationdelegate uiscenedelegate
© www.soinside.com 2019 - 2024. All rights reserved.