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

      原文在此

      main函数之前的底层环境搭建(代码拷贝、内存的开辟等操作系统相关的开启一个进程)不再描述,我们从main函数开始。

    1 main函数

    int main(int argc, char * argv[]) {
        NSLog(@"===%s",argv[0]);
        @autoreleasepool {
            /// 函数原型:
            //  int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }

      这里面的代码一般是不变的。首先是一个自动释放池,保证结束时内存释放,下面是参数介绍:

      argc, argv:是标C的参数,argc为argv数组中元素的个数。argv一般有一个元素argv[0]即当前可执行程序的路径。(另外,在linux系统下我们通过终端打开一个程序可以给它传递参数,具体不再展开。如果不知所云括号里面的自动忽略);

      principalClassName指定应用程序类,该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值,它是一个单例,代表一个进程,也是程序创建的第一个对象,利用UIApplication对象,能进行一些应用级别的操作;

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

    2 UIApplicationMain

       1)根据传进的参数创建UIApplication对象;

       2)根据传进的参数创建UIApplication的delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性。

       3)开启一个消息循环

      下面分为storyboard启动和没有storyboard启动

    ##有storyboard##

    3 根据Info.plist加载storyboard

       1)创建UIWindow,UIWindow是一种特殊的UIView,通常在一个App中只会有一个UIWindow(注意是通常,还有其它的,比如弹出的键盘)。设置为主窗口,同一时刻主窗口只有一个,可以通过[UIApplication sharedApplication].keyWindow获取。

       2)创建和设置UIWindow的rootViewController。

       3)显示窗口

     


     

    ##没有storyboard##

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

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

           2)在application:didFinishLaunchingWithOptions:中创建UIWindow:window

           3)创建和设置UIWindow的rootViewController

           4)显示并设置window为主窗口:[window makeKeyAndVisible]; 然后self.window = window;防止被释放。

     

     

  • 相关阅读:
    HTML5 实现Link跳线效果
    在TWaver的Tree节点上画线
    用TWaver加载大型游戏场景一例
    22万个木箱!TWaver 3D极限压榨
    如何在MONO 3D寻找最短路路径
    如何创建TWaver 3D的轮廓选中效果
    巧用TWaver 3D 矢量图形功能
    如何实现TWaver 3D颜色渐变
    HDU 1390 Binary Numbers
    HDU 1328 IBM Minus One
  • 原文地址:https://www.cnblogs.com/mddblog/p/4761245.html
Copyright © 2011-2022 走看看