zoukankan      html  css  js  c++  java
  • iOS开发之iOS程序的启动过程

    程序启动的完整过程:

    1main函数

    2UIApplicationMain

    * 创建UIApplication对象

    * 创建UIApplication的delegate对象

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

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

    * 在application:didFinishLaunchingWithOptions:中创建UIWindow

    * 创建和设置UIWindow的rootViewController

    * 显示窗口

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

    * 创建UIWindow

    * 创建和设置UIWindow的rootViewController

    * 显示窗口

    4UIApplicationMain

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

    int UIApplicationMain(int argc, char *argv[], NSString

    *principalClassName, NSString *delegateClassName);

    各参数含义:

    argcargv:直接传递给UIApplicationMain进行相关处理即可。

    principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值。

    delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议。

    UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性。

    接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)。

    程序正常退出时UIApplicationMain函数才返回。

  • 相关阅读:
    2017-09-13
    JavaSE07——异常
    FastDFS入门、搭建以及应用(转载)
    Centos7安装JDK1.8
    「扫盲」 Elasticsearch(转载)
    Java06——面向对象
    Java05——数组
    Java02——基础
    spring boot 配置文件配置项 数字特殊处理问题
    java动态代理机制之自定义实现动态代理
  • 原文地址:https://www.cnblogs.com/lifengfneg/p/4773866.html
Copyright © 2011-2022 走看看