悦成移动—移动互联网黄埔军校
网址:http://www.sunnycareer.com/it/index.html
或 百度悦成
很多时候,我们不需要关心这个类,我们很少继承这个类,偶尔会调用这个类的 api 来实
现一些功能,但是不可否认,这个类是 iOS 编程中很重要的一个概念,所以我这里写这个
文章来总结以下这个类的信息,如果写的不对的地方,请留言,多谢。
UIApplication 的核心作用是提供了 iOS 程序运行期间的控制和协作工作。
每一个程序在运行期必须有且仅有一个 UIApplication(或者其子类)的一个实例。回想一
下我在前面的文章“main 函数研究”的文章中提到的 main 函数的代码,可以看出,在程序
开始运行的时候,UIApplicationMain 函数是程序进入点,这个函数做了很多工作,其中一
个重要的工作就是创建一个 UIApplication 的单例实例。在你的代码中你,你可以通过调用
[UIApplication sharedApplication]来得到这个单例实例的指针。
UIApplication 的一个主要工作是处理用户事件,它会起一个队列,把所有用户事件都放入
队列,逐个处理,在处理的时候,它会发送当前事件到一个合适的处理事件的目标控件。
此外,UIApplication 实例还维护一个在本应用中打开的 window 列表(UIWindow 实例),
这样它就可以接触应用中的任何一个 UIView 对象。UIApplication 实例会被赋予一个代理
对象,以处理应用程序的生命周期事件(比如程序启动和关闭)、系统事件(比如来电、
记事项警告)等等。
新建一个任意类型的 iOS 应用工程,加入我们在 Class Prefix 输入是 TC,我们可以看到工
程中生成一个类:
TCAppDelegate :UIResponder <UIApplicationDelegate>
这里这个类的基类是 UIResponder,和 4.2 以前生成的工程是不同的,以前是继承自 NSObject。不论如何,
本类实现了一个名叫 UIApplicationDelegate 的接口,这个表明这个类就是这个工程中 UIApplication 实例的
代理类。
在 main 函数中,
@autoreleasepool {
returnUIApplicationMain(argc, argv,
nil,NSStringFromClass([TCAppDelegateclass]));
}
这里传入了代理类到
UIApplicationMain
函数中,
UIApplicationMain