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函数才返回。

  • 相关阅读:
    [zz]redhat6.0无法识别ntfs分区的解决方法
    使用ftp搭建yum源问题解决
    [zz]搭建centos6.0本地yum源(32位)
    JAVA传统线程技术
    JAVA判断字符串是否为数字
    java之异常
    随便记两笔Java中的反射
    【转】单例模式完全解析
    java.lang.Enum
    文件搜索
  • 原文地址:https://www.cnblogs.com/lifengfneg/p/4773866.html
Copyright © 2011-2022 走看看