首页 > 代码库 > iOS程序的完整启动过程分析

iOS程序的完整启动过程分析

 

1.点击程序图标,打开程序

2.执行main函数,分析如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(int argc, char * argv[])
{
    @autoreleasepool {
        /*
         argc: 系统或者用户传入的参数个数
         argv: 系统或者用户传入的实际参数
         */
        // return UIApplicationMain(argc, argv, nil, NSStringFromClass([NJAppDelegate class]));
         
        // return UIApplicationMain(argc, argv, @"UIApplication", NSStringFromClass([BLAppDelegate class]));
         
        /*
         1.根据传入的第三个参数创建UIApplication对象
         2.根据传入的第四个产生创建UIApplication对象的代理
         3.设置刚刚创建出来的代理对象为UIApplication的代理
         4.开启一个事件循环
         */
         return <span style="color: rgb(255, 0, 0);">UIApplicationMain</span>(argc, argv, @"UIApplication", @"BLAppDelegate");  //3 、4 步骤
    }
}

 

3.执行UIApplicationMain函数

4.创建UIApplication对象、UIApplicationdelegate对象

5.开启事件循环监听系统事件

 

6.程序加载完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法

1> 创建窗口对象

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

2> 创建控制器对象

self.viewController = [[BLViewController alloc] initWithNibName:@"BLViewController" bundle:nil];

3> 设置窗口的根控制器

self.window.rootViewController = self.viewController;

4> 让窗口成为主窗口、并且可见

[self.window makeKeyAndVisible];