天天看点

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>int</code> <code>main(</code><code>int</code>

<code>argc,</code><code>char</code>

<code>* argv[])</code>

<code>{</code>

<code>    </code><code>@autoreleasepool</code>

<code>        </code><code>/*</code>

<code>         </code><code>argc: 系统或者用户传入的参数个数</code>

<code>         </code><code>argv: 系统或者用户传入的实际参数</code>

<code>         </code><code>*/</code>

<code>        </code><code>// return UIApplicationMain(argc, argv, nil, NSStringFromClass([NJAppDelegate class]));</code>

<code>        </code> 

<code>        </code><code>// return UIApplicationMain(argc, argv, @"UIApplication", NSStringFromClass([BLAppDelegate class]));</code>

<code>         </code><code>1.根据传入的第三个参数创建UIApplication对象</code>

<code>         </code><code>2.根据传入的第四个产生创建UIApplication对象的代理</code>

<code>         </code><code>3.设置刚刚创建出来的代理对象为UIApplication的代理</code>

<code>         </code><code>4.开启一个事件循环</code>

<code>         </code><code>return</code>

<code>&lt;span style=</code><code>"color: rgb(255, 0, 0);"</code><code>&gt;UIApplicationMain&lt;/span&gt;(argc, argv, @</code><code>"UIApplication"</code><code>, @</code><code>"BLAppDelegate"</code><code>); </code><code>//3 、4 步骤</code>

<code>    </code><code>}</code>

<code>}</code>

3.执行UIApplicationMain函数

4.创建UIApplication对象、UIApplication的delegate对象

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

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

1&gt; 创建窗口对象

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen

mainScreen] bounds]];

2&gt; 创建控制器对象

self.viewController = [[BLViewController alloc]

initWithNibName:@"BLViewController" bundle:nil];

3&gt; 设置窗口的根控制器

self.window.rootViewController =

self.viewController;

4&gt; 让窗口成为主窗口、并且可见

[self.window makeKeyAndVisible];

继续阅读