UIApplication对象是应用程序的象征,每个应用都有自己的UIApplication对象,这对象是系统自动帮我们创建的,他是一个单例对象,一个ios程序启动后创建的第一个对象就是UIApplication对象我们只能通过[UIApplication sharedApplication]获得这个单例对象。不能手动创建。
一、仿制UIApplication单例
1、程序已启动就去创建对象;
+(void)load{
_myApplication = [[MyApplication alloc]init];
}
2、保证调用alloc时会产生异常,重写系统的alloc方法。
+(instancetype)alloc{
if (_myApplication) {
NSException *exception = [NSException exceptionWithName:@"NSInternalInconsistencyException" reason:@"There can only be one Person instance." userInfo:nil];
[exception raise];
}
return [super alloc];
}
3、同过share方法获取对象。
+(instancetype)shareMyApplication{
return _myApplication;
}
二、UIApplication的功能
1、设应用提醒数字;
UIApplication *app = [UIApplication sharedApplication];
app.applicationIconBadgeNumber = 666;
2、设置联网状态;
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
[app registerUserNotificationSettings:setting];
3、设置状态栏;
app.statusBarStyle = UIStatusBarStyleDefault;
4、打开
[app openURL:[NSURL URLWithString:@"tell://110"]];
[app openURL:[NSURL URLWithString:@"mailto://ygw163.com"]];
[app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
三、UIApplication代理
UIApplication会在程序一启动的时候创建一个UIApplicationDelegate的代理,这个就是我们程序一创建的时候的AppDelegate类。AppDelegate就是遵守了UIApplicationDelegate协议。这个类定义很多监听事件的方法,同时也定义了一些应用程序的生命周期方法。
1、应用程序启动完就调用;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
2、应用程序将要进入前景
- (void)applicationWillEnterForeground:(UIApplication *)application;
3、应用程序失去焦点的时候调用;
- (void)applicationWillResignActive:(UIApplication *)application;
4、应用程序即将进入后台的时候调用;
- (void)applicationDidEnterBackground:(UIApplication *)application;
5、当一个应用程序完全获取焦点时候调用;
- (void)applicationDidBecomeActive:(UIApplication *)application;