zoukankan      html  css  js  c++  java
  • iOS程序启动原理

    关于iOS的启动过程,之前也是一知半解,查了一些资料,总结如下。

    首先,放一张流程图。摘自网络图片(侵权删)

    1.main函数

    2.UIApplicationMain

    * 创建UIApplication对象

    * 创建UIApplication的delegate对象

    --------没有storyboard--------- 

    3.delegate对象开始处理(监听)系统事件(没有storyboard)

    * 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法

    * 在application:didFinishLaunchingWithOptions:中代码创建UIWindow

    * 创建和设置UIWindow的rootViewController

    * 显示窗口

    --------有storyboard--------- 

    3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)

    * sb创建UIWindow

    * 创建和设置UIWindow的rootViewController

    * 显示窗口

    这里可能有个误区:

    不管设不设置Main Interface,代码都会走application:didFinishLaunchingWithOptions方法,只是设置uiwindow的方式有区别而已。

    1、有设置,系统会直接取plist设置的界面控制器。

    2、不设置,系统会在application:didFinishLaunchingWithOptions这里查找uiwindow。

  • 相关阅读:
    网址收藏
    Linux创建swap文件
    vim命令大全
    char * 和字符数组
    JSR 203终于要出来啦
    对象关系技术的探讨
    最近编码更流畅了
    孤独终止的地方,就是广场开始的地方......
    不要奢望.NET能够跨平台
    实现了HTTP多线程下载
  • 原文地址:https://www.cnblogs.com/yajunLi/p/6268805.html
Copyright © 2011-2022 走看看