标签:执行 没有 技术 from round 笔记 nil 控制器 tor
- 执行main函数;
- 执行main函数中的UIApplicationMain函数,创建UIApplication对象,创建ApplicationDelegate对象并将其设置为UIApplication对象的代理;
- 程序启动完毕,开启消息循环(Main RunLoop)、监听事件并调用注册方法;接着调用代理的
application:didFinishLaunchingWithOptions:
方法;在该方法中手动创建UIWindow对象设置为代理的window属性;- 创建控制器,将控制器设置为window的根控制器(rootViewController),此时,控制器中的View会自动加载到window上;
- 将创建好的window设置为主窗口并显示(调用window的
makeKeyAndVisible
方法)。
示例程序:
1./**
2. 应用程序启动完毕
3. */
4.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
5. // 1. 创建窗口
6. UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
7. self.window = window;
8.
9. // 2. 创建窗口的根控制器
10. UIViewController *vc = [[UIViewController alloc] init];
11. vc.view.backgroundColor = [UIColor redColor];
12. self.window.rootViewController = vc;
13.
14. // 3. 成为主窗口并显示
15. [self.window makeKeyAndVisible];
16.
17. return YES;
18.}
- 执行main函数;
- 执行main函数中的UIApplicationMain函数,创建UIApplication对象,创建ApplicationDelegate对象并将其设置为UIApplication对象的代理;
- 自动创建好UIWindow对象;
- 检索info.plist文件中最重要的storyboard(通常为Main storyboard)信息,根据info.plist提供的信息,加载storyboard文件,自动创建好控制器和控制器的View;
- 将创建好的控制器设置为window对象的根控制器(rootViewController)并显示窗口。
- 应用程序启动后,会开启应用程序的Main Runloop(事件循环),监听事件并调用注册的方法(首先会在程序完毕后调用delegate对象的
application:didFinishLaunchingWithOptions:
方法);
argc
:使用main函数中的argc即可; argv
:使用main函数的argv即可; principalClassName
:指定应用程序类名(app的象征),该类必须是UIApplication(或子类),如果为nil,则用UIApplication类作为默认值;
备注
:传入应用程序对象类名,nil
==NSStringFromClass([UIApplication class])
==@"UIApplication"
。
delegateClassName
:指定应用程序的代理类,UIApplicationDelegate协议中定义的方法,在该类中实现。
UIApplicationMain()
函数开启一个“死循环”(事件循环), 所以程序不会退出, 我们可以任意使用。在这个“死循环”(事件循环)中程序不断监听用户的各种事件, 依次处理(依靠”事件队列”实现)。
备注
:在消息循环中不断监测消息队列
中是否有新的事件(队列是先进先出,事件队列的目的是为了提高性能),消息循环可以简单理解为一个死循环;当系统有事件被触发,事件所执行的方法会放入消息队列中,消息循环的作用就是不停的去消息 队列中看有没有新的消息,有就执行,用户感觉不到等待的时间。
备注
:程序正常退出时UIApplicationMain函数才返回。
标签:执行 没有 技术 from round 笔记 nil 控制器 tor
原文地址:http://www.cnblogs.com/leilifengixng/p/6367593.html