iOS代理类AppDelegate
iOS代理类AppDelegate

iOS代理类AppDelegate

AppDelegate 是iOS应用的代理类,全名是 UIApplicationDelegate 协议的实现类,用于响应整个App的生命周期事件。简单来说:

负责整个 App在程序启动、进入后台、接收通知、打开 URL 等关键时刻负责做“响应处理”。

主要功能

当启动一个 iOS App 时,系统会首先启动 UIApplication 实例,然后会把 AppDelegate 设置成它的代理(delegate),由它来接管系统发来的生命周期回调事件。

主要功能包括:

1、App 启动:使用application(_:didFinishLaunchingWithOptions:),负责初始化逻辑、配置 SDK、设置 UI 等。

2、App 即将进入前台:使用applicationWillEnterForeground,负责准备 UI 更新。

3、App 成为活跃状态:使用applicationDidBecomeActive,负责恢复动画、计时器。

4、App 进入后台:使用applicationDidEnterBackground,负责保存数据、释放资源。

5、App 即将终止:使用applicationWillTerminate,负责做最终清理。

常见代码结构

如果创建UIKit项目的模版,可以看到如下结构:    

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        print("App 启动完成")
        return true
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        print("App 进入后台")
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
        print("App 即将进入前台")
    }
}

这个类会在 UIApplicationMain() 调用时由系统自动创建并挂载。

SwiftUI和AppDelegate

SwiftUI中还可以使用AppDelegate,但不是默认入口。

SwiftUI 中,通过 @main struct MyApp: App 来启动 App,而不是 AppDelegate,但仍然可以添加 AppDelegate 来处理系统事件:

@main
struct MyApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

这会让 SwiftUI 应用使用自定义的 AppDelegate,非常适合处理:

1、推送通知。

2、URL Scheme。

3、生命周期回调。

4、第三方 SDK 初始化。

使用场景

1、第三方 SDK 初始化:如 Firebase、Umeng、Bugly 等 SDK 初始化通常放在启动中处理。

2、通知处理:注册远程通知、处理 deviceToken、处理推送内容。

3、应用启动逻辑:判断是否是首次启动,是否跳转登录页等。

4、URL 跳转处理:支持通过 URL 打开 App。

5、后台任务管理:处理 App 被挂起前的数据保存等。

iOS 13之后的变化

iOS 13 引入了 UIScene 多窗口架构,将 UI 生命周期(如窗口、视图控制器的创建)拆分到了 SceneDelegate 中。

AppDelegate 管理全局事件(通知、后台、启动等)

SceneDelegate 管理每个窗口的 UI 生命周期

例如:

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

这就是 SceneDelegate 创建 UI 的地方。

总结

AppDelegate 是 iOS 应用生命周期的核心响应器,是 UIApplication 的代理,专门负责接收和处理 App 层级的系统事件。在 UIKit 和 SwiftUI 中都可以使用,是任何正式 App 开发不可缺少的核心组件。

相关文章

1、iOS UIApplication类:https://fangjunyu.com/2025/05/20/ios-uiapplication%e7%b1%bb/

2、SwiftUI和iOS核心类UIViewController:https://fangjunyu.com/2025/05/19/swiftui%e5%92%8cios%e6%a0%b8%e5%bf%83%e7%b1%bbuiviewcontroller/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注