iOS app启动流程

概要

  1. 进入main函数
  2. 执行UIApplicationMain函数
    1. 创建UIApplication对象
    2. 创建UIApplicationDelegate对象并复制
    3. 读取配置文件中的info.plist,设置程序启动的一些属性
    4. 创建应用程序的main runloop循环
  3. UIapplicationDelegate对象开始处理监听到的事件
    1. 程序启动成功后首先调用application:didFinishLaunchingWithOtions:方法
      如果info.plist文件中配置了启动storyboard文件名,则加载storyboard文件。如果没有配置,则根据代码来创建UIWindow-rootViewController。

UIApplication

UIApplication代表一个应用程序,每个应用程序都有一个UIApplication全局对象,通过[UIApplication sharedApplication]获得这个对象,进行一些应用级的操作。UIApplication是一个应用程序的开始,它维护了一个在本应用中打开的window列表,负责初始化显示UIWindow,负责加载应用程序的第一个UIView到UIWindow中。UIApplication还被赋予一个代理对象,在实际编程中,我们一般是和代理对象UIApplicationDelegate打交道,UIApplication负责监听接收事件,而由UIApplicationDelegate决定应用程序如何去响应这些事件。

UIApplicationDelegate

所有的移动操作都有一个特点:很容易收到打扰,如来电、锁屏等,会导致app进入后台或者被终止。app在受到干扰时会产生一些事件,UIApplication会监听这些事件,UIApplicationDelegate负责处理这些事件。主要包括如下事件:

  1. 程序加载完毕application:didFinishLauchingWithOpetions:
  2. 程序将失去焦点applicationWillResignActive:
  3. 程序进入后台applicationDidEnterBackground:
  4. 程序将要回到前台applicationWillEnterForeground:
  5. 程序重新获取焦点applicationDidBecomeActive:
  6. 程序即将退出applicationWillTerminate:

备注:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //全屏window
    self.window.backgroundColor = [UIColor whiteColor]; //白色背景
    [self.window makeKeyAndVisible]; //
  
    return YES;
}

UIViewController的生命周期

  1. alloc
  2. init
  3. loadView
  4. ViewDidLoad 载入完成可以进行自定义数据以及动态创建控件
  5. ViewWillAppear
  6. ViewDidAppear
  7. ViewWillDisappear
  8. ViewDidDisappear
  9. dealloc

注意:发生内存警告的时候,如果本视图不是当前屏幕正在显示的视图,viewDidUnload将会被执行。本视图的所有子视图将会被销毁,以释放内存。

参考

iOS APP启动流程()

你可能感兴趣的:(iOS app启动流程)