多控制器之UIApplication
UIApplication
简介
- UIApplication对象是应用程序的象征
- 每个应用都有自己的UIApplication对象,其是单例对象,通过
[UIApplication sharedApplication]
可以获得,不能用alloc来创建 - 一个程序启动后创建的第一个对象就是UIApplication对象
- 利用这个对象,可以进行一个应用级别的操作:
- 显示程序图标右上角的红色提醒数字(ios8之后要先注册通知):
applicationIconBadgeNumber(属性)
- 显示联网指示器的可见性(ios7之后交给控制器管理,所以要设置):
statusBarHidden(属性)
- 打电话:
openURL(方法)
- 发短信:
openURL(方法)
- 浏览网页:
openURL(方法)
- 等等
- 显示程序图标右上角的红色提醒数字(ios8之后要先注册通知):
- 注意:load类方法(不能访问属性):当类加载到内存中就调用,会比main方法调用还早
代理delegate
- app受到干扰会产生一系列琐事,这时UIApplication会通知它的代理对象来处理
-
处理事件:
// 应用程序启动完成的时候调用 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return YES; } // 当应用程序即将失去焦点(不可与用户交互) - (void)applicationWillResignActive:(UIApplication *)application { } // 应用程序进入后台 - (void)applicationDidEnterBackground:(UIApplication *)application { } // 应用程序将要进入前台 - (void)applicationWillEnterForeground:(UIApplication *)application { } // 应用程序完全获得焦点(可与用户交互) - (void)applicationDidBecomeActive:(UIApplication *)application { } // 程序即将关闭的时候 - (void)applicationWillTerminate:(UIApplication *)application { }
应用程序的启动原理
int main(int argc, char * argv[]) {
@autoreleasepool {
// 第三个参数:设置UIApplication的对象的名称,只能它或者它子类,nil == @"UIApplication"
// 第四个参数:创建代理对象,遵守了UIApplicationDelegate协议,把这个对象设为应用程序(UIApplication)的代理
// 用NSStringFromClass:将一个类名转换成字符串---1.提示功能 2.避免输入错误
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
// 程序的启动原理
// 1.执行main -> UIApplicationMain
// 2.创建UIApplication对象,并设置它的代理
// 3.开启了一个事件循环(主运行循环)(死循环) -> 保证应用程序能一直运行
// 4.应用程序加载Info.plist配置文件,判断该文件中是否有main值,如果有就会去加载Main.storyBoard,
如果没有就执行didFinishLaunchingWithOptions:方法,应用程序启动完毕