AppDelegate
iOS13之前,
AppDelegate
的职责是:全权处理App
生命周期和UI生命周期
iOS13之后,AppDelegate
的职责是:处理App
生命周期和SceneDelegate
生命周期
- 启动过程
main
函数 -> 自动释放池 ->UIApplicationMain
(永不返回,保证程序不会被销毁)-> 创建应用程序对象UIApplication
->创建应用程序的代理对象AppDelegate
->IOS13
之前,将AppDelegate
的window
实例化,设置为keyWindow
主窗口 -> 加载配置文件指定的storyboard
int main(int argc, char * argv[]) {
NSString * appDelegateClassName;
@autoreleasepool {
// Setup code that might create autoreleased objects goes here.
appDelegateClassName = NSStringFromClass([AppDelegate class]);
}
return UIApplicationMain(argc, argv, nil, appDelegateClassName);
UIApplicationMain(argc, argv, nil, appDelegateClassName)
第3个参数nil:相当于应用程序类字符串@"UIApplication"创建一个应用程序对象
第4个参数:创建应用程序代理对象,将其设置为应用程序对象的代理
IOS13之前
NotRunning
(未运行):程序未运行Inactive
(未激活):程序在前台运行,但没有接收到事件。在没有事件处理情况下程序通常停留在这个状态。Active
( 激活 ): 程序在前台运行而且接收到了事件。这也是前台的一个正常的模式。Backgroud
( 后台 ):程序在后台而且能执行代码&