UIApplication
- UIApplication对象是应用程序的象征
- 整个App中只有一个UIApplication对象,属于单例对象,不能够再次被创建。[UIApplication shareApplication]
- 一个iOS程序启动后创建的第一个对象就是UIApplication对象
- 一般来做一些应用级别的操作,比如:对状态栏、网络活动指示符、应用程序角标提醒、openURL
UIApplicationDelegate
还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件
- 可处理的事情包括:程序的启动与终止、程序进入前台\后台、内存警告 等等
- Hardware -> simulate memory warning,可以模拟模拟器的内存警告
程序的启动原理
- main函数是程序的启动入口
- UIApplicationMain做4件事情
- 1.创建UIApplication
- 2.设置AppDelegate对象为其代理
- 3.开启主运行循环,不断的监听事件
- 4.读取Info.plist,加载main.storyboard
UIWindow
- 父类是UIView
- 一个iOS程序之所以能显示在屏幕上,完全是因为它有UIWindow
- main.storyboard加载之后做的3件事情:
- 1.创建窗口
- 2.创建控制器,并将initial指定的控制器作为窗口的根控制器rootViewController
- 3.显示窗口
- application 有一个keyWindow主窗口、windows窗口数组
- 键盘 is 窗口,UIAlertView not 窗口、状态栏 is 窗口
- windows维护着一个窗口的层级关系,并可以设置窗口的层级UIWindowsLevel
控制器的创建
-
通过storyboard创建
- 1.创建窗口
- 2.创建storyboard 对象
- 3.通过storyboard 对象创建viewController
- 4.将窗口的根控制器设置为 viewController
-
5.显示窗口makeKeyAndVisible
程序生成之后的文件ViewController类是UIViewController的子类
控制器view的创建
多控制器管理
- 1个控制器管理着多个控制器,即父子兄弟控制器
- 2个特殊的控制器:UINavigateController、UITabBarController
- 导航控制器也需要一个根控制器rootViewController,并具有当前显示的控制器topViewController
- pushViewController 方法是成为导航控制器的子控制器,并显示出来。
- 导航控制器维护一个子控制器数组,以栈的形式可以push、pop
- 几个属性与方法