AppDelegate中各方法的执行顺序

本文深入解析了iOS应用程序从启动到退出的全过程,包括程序入口、激活、后台运行、挂起及前台状态转换的关键方法,如application:didFinishLaunchingWithOptions:、applicationDidBecomeActive:、applicationWillResignActive:、applicationDidEnterBackground:、applicationWillEnterForeground:,揭示了iOS应用如何响应不同状态变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流程图

这里写图片描述

流程

1.程序入口

进入main函数,设置AppDelegate为代理

int main(int argc, char * argv[]) {  
      @autoreleasepool {  
          return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));    
    } 
}

原型:
 UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);

principalClassName (主要类名) 和 delegateClassName (委托类名)。

(1) 如果principalClassName是nil,那么它的值将从Info.plist去获取,如果Info.plist没有,则默认为UIApplication。principalClass这个类除了管理整个程序的生命周期之外什么都不做,它只负责监听事件然后交给delegateClass去做。

(2) delegateClass 将在工程新建时实例化一个对象。NSStringFromClass([AppDelegate class])

2.程序完成加载

[AppDelegate application:didFinishLaunchingWithOptions:]

3.创建UIWindows

@property (strong, nonatomic) UIWindow *window;//AppDelete.h自带的属性

4.程序被激活

[AppDelegate applicationDidBecomeActive:]

5.当点击command+shit+h时(针对模拟器,手机是当点击home键)

程序取消激活状态

[AppDelegate applicationWillResignActive:];

//一种是即将进入后台状态会调用此方法,还有可能是当有电话进来或短信进来或锁屏等情况下,这时应用程序挂起进入非活动状态,也就是手机界面还是显示着你当前的应用程序的窗口,只不过被别的任务强制占用了,

程序进入后台

[AppDelegate applicationDidEnterBackground:];

//指当前窗口不是你的App,大多数程序进入这个后台会在这个状态上停留一会,时间到之后会进入挂起状态(Suspended)。如果你程序特殊处理后可以长期处于后台状态也可以运行。

Suspended (挂起):
程序在后台不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存。

6.点击进入工程 程序进入前台

[AppDelegate applicationWillEnterForeground:]

程序被激活

[AppDelegate applicationDidBecomeActive:];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值