美文网首页
3 - 程序启动过程

3 - 程序启动过程

作者: RadioWaves | 来源:发表于2017-07-02 10:02 被阅读9次

    iOS程序的启动过程

    Snip20150831_11.png

    UIApplicationMain

    main函数中执行了一个UIApplicationMain这个函数


    Snip20150831_12.png
    // argc、argv:直接传递给UIApplicationMain进行相关处理即可
    int UIApplicationMain(int argc, char *argv[],
    // principalClassName:指定应用程序类名(app的象征);
       该类必须是UIApplication(或子类)。
       如果为nil,则用UIApplication类作为默认值.
    // delegateClassName:指定应用程序的代理类
       该类必须遵守__UIApplicationDelegate__协议
    NSString *principalClassName, NSString *delegateClassName);
    
    • UIApplicationMain函数会根据principalClassName创建UIApplication对象
    • 根据delegateClassName创建一个delegate对象
    • 并将该delegate对象赋值给UIApplication对象中的delegate属性
    • 接着会建立应用程序的Main Runloop(事件循环)
    • 然后进行事件的处理 :
      (首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)
    • 程序正常退出时UIApplicationMain函数才返回

    程序启动过程

    -------------UIApplication做的事情----------------

    1- 创建UIApplication对象;

    2 - 创建UIApplication代理,并且设置UIApplication代理;

    3 - 开启主运行循环,处理事件

    4 - 加载info.plist

    5 - 如果info.plist里面有指定main.storyboard,就加载main.storyboard

    —————在加载main.storyboard时做的事情——————

    1 - 创建UIWindow

    2 - 加载main.storyboard,并且加载main.storyboard中指定的控制器

    3 - 把新创建的控制器作为窗口的根控制器,让窗口显示出来.

    相关文章

      网友评论

          本文标题:3 - 程序启动过程

          本文链接:https://www.haomeiwen.com/subject/gwjncxtx.html