一、iOS程序的完整启动过程(有storyboard)

1.先执行main函数,main内部会调用UIApplicationMain函数

2.UIApplicationMain函数里面做了什么事情:

1> 创建UIApplication对象

2> 创建UIApplication的delegate对象-----MJAppDelegate

3> 开启一个消息循环

* 每监听到对应的系统事件时,就会通知MJAppDelegate

4> 为应用程序创建一个UIWindow对象(继承自UIView),设置为MJAppDelegate的window属性

5> 加载Info.plist文件,读取最主要storyboard文件的名称

6> 加载最主要的storyboard文件,创建白色箭头所指的控制器对象

7> 并且设置第6步创建的控制器为UIWindow的rootViewController属性(根控制器)

8> 展示UIWindow,展示之前会将添加rootViewController的view到UIWindow上面(在这一步才会创建控制器的view)

[window addSubview: window.rootViewControler.view];

二、UIWidnow

1.常见方法

1> 成为主窗口:[window makeKeyWindow];

2> 显示、并且成为主窗口:[window makeKeyAndVisible];

3> 仅仅是显示窗口:window.hidden = NO;

2.主窗口

1> 一个iOS app只能有一个主窗口(keyWindow),只有keyWindow才能接受文本框的输入事件

2> 如何访问主窗口: [UIApplication sharedApplication].keyWindow

3>app中所有的窗口: [UIApplication sharedApplication].windows

4.屏幕的旋转事件

1> 当屏幕旋转,UIApplication对象接受到旋转事件,接着会通知keyWindow

2> 最终,旋转事件传递到UIWidnow身上,UIWindow会通知rootViewControler,rootViewControler自己会决定要不要做相应的旋转操作

04-13 15:08