SceneDelegate 和 AppDelegate 之间的区别

swift

1个回答

写回答

floraume

2025-09-07 19:20

+ 关注

IOS
IOS

SceneDelegate 和 AppDelegate 的区别

在开发 IOS 应用程序时,我们经常会遇到两个重要的类,即 SceneDelegate 和 AppDelegate。这两个类在应用程序的生命周期中扮演着不同的角色,下面我们将详细介绍它们之间的区别。

1. AppDelegate

AppDelegate 类是在应用程序启动时首先加载的类。它是应用程序的主要入口点,并负责处理与应用程序生命周期相关的事件。AppDelegate 类通常包含了以下几个重要的方法:

- application(_:didFinishLaunchingWithOptions:):当应用程序启动完成时调用,可以在此方法中进行一些初始化工作。

- applicationDidEnterBackground(_:):当应用程序进入后台时调用,可以在此方法中保存应用程序的状态。

- applicationWillEnterForeground(_:):当应用程序即将进入前台时调用,可以在此方法中恢复应用程序的状态。

- applicationWillTerminate(_:):当应用程序即将终止时调用,可以在此方法中进行清理工作。

以下是一个简单的 AppDelegate 示例代码:

Swift

import UIKit

@UIApplicationMAIn

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

// 在应用程序启动完成时执行的初始化工作

return true

}

func applicationDidEnterBackground(_ application: UIApplication) {

// 当应用程序进入后台时保存应用程序的状态

}

func applicationWillEnterForeground(_ application: UIApplication) {

// 当应用程序即将进入前台时恢复应用程序的状态

}

func applicationWillTerminate(_ application: UIApplication) {

// 当应用程序即将终止时执行的清理工作

}

}

2. SceneDelegate

IOS 13 及更高版本中引入了多场景(multi-scene)功能,SceneDelegate 类就是为了支持多场景而新增的。每个场景(Scene)都有一个对应的 SceneDelegate 对象,负责管理场景的生命周期和状态。

SceneDelegate 类通常包含以下几个重要的方法:

- scene(_:willConnectTo:options:):当场景即将连接时调用,可以在此方法中配置场景的外观和行为。

- sceneDidDisconnect(_:):当场景断开连接时调用,可以在此方法中清理场景相关的资源。

- sceneDidEnterBackground(_:):当场景进入后台时调用,可以在此方法中保存场景的状态。

- sceneWillEnterForeground(_:):当场景即将进入前台时调用,可以在此方法中恢复场景的状态。

- sceneDidBecomeActive(_:):当场景变为活动状态时调用,可以在此方法中执行一些活动相关的操作。

- sceneWillResignActive(_:):当场景将要变为非活动状态时调用,可以在此方法中暂停活动相关的操作。

以下是一个简单的 SceneDelegate 示例代码:

Swift

import UIKit

@avAIlable(IOS 13.0, *)

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

var window: UIWindow?

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

guard let windowScene = (scene as? UIWindowScene) else { return }

window = UIWindow(windowScene: windowScene)

// 配置场景的外观和行为

}

func sceneDidDisconnect(_ scene: UIScene) {

// 当场景断开连接时执行的清理操作

}

func sceneDidEnterBackground(_ scene: UIScene) {

// 当场景进入后台时保存场景的状态

}

func sceneWillEnterForeground(_ scene: UIScene) {

// 当场景即将进入前台时恢复场景的状态

}

func sceneDidBecomeActive(_ scene: UIScene) {

// 当场景变为活动状态时执行的操作

}

func sceneWillResignActive(_ scene: UIScene) {

// 当场景将要变为非活动状态时执行的操作

}

}

在本文中,我们介绍了 SceneDelegate 和 AppDelegate 之间的区别。AppDelegate 类是应用程序的主要入口点,负责处理与应用程序生命周期相关的事件。而 SceneDelegate 类是为了支持多场景功能而新增的,负责管理场景的生命周期和状态。通过合理使用这两个类,我们可以更好地控制和管理应用程序的行为和外观。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号