IOS运行过程详情
1.每一个应用程序都有属于自己的UIWindow,UIWindow继承自UIView
2.UIView面临的问题
1》谁来控制UIView之间的切换?
2》谁来管理UIView的生命周期?
3》谁来给UIView装配数据?
4》谁来监听UIView的事件?
上面3个问题的答案是:控制器(UIViewController)
IOS程序的运行过程:
1.首先执行main函数
2.执行UIApplicationMain函数
3.UIApplicationMain函数内部
1》创建一个UIApplication实例。这个UIApplication对象是单例的,一个IOS程序对应一个UIApplication对象
2》UIApplication对象是应用程序的象征
3》开启一个消息循环(main loop)用来监听用户的操作。
4》再创建一个UIApplication的delegate对象,负责监听UIApplication的生命周期
5》当UIApplication的生命周期发生改变时,会给delegate发送不同的消息。
*当第一次运行程序的时候:
(加载完毕)-> (获取焦点)
*当点击home键的时候:
(失去焦点)->(进入后台 )
*当再次点击应用图标重新进入应用的时候:
(进入前台)->(获取焦点)
UIApplicationMain函数的参数:
*第三个参数用来指定UIApplication的类名(或者子类),如果为nil,默认就是UIApplication.
*第四个参数用来指定UIApplication的代理。
//设置窗口的根控制器
self.window.rootViewController=self.viewController;
//上面的代码内部执行了下面代码的操作
[self .window addSubview:self.viewController.view];
//窗口不会默认显示,需要调用方法来显示
//keyWindow是主窗口,只有主窗口才能跟用户正常交互
[self.window makeKeyAndVisible];