先說點(diǎn)題外話:
UIApplication是應(yīng)用程序系統(tǒng)的單例對(duì)象,單例到底是什么呢?下面是我的解釋:
單例在應(yīng)用程序只有一份內(nèi)存,并不會(huì)分配很多的內(nèi)存.
前面的最初我也解釋了單例
一.先講講UIApplication能做些什么??
- 1.設(shè)置應(yīng)用程序圖標(biāo)的提醒數(shù)字
代碼如下
有必要說一下UIApplication使用單例創(chuàng)建的,但里的常見一般是share+類名
//1.獲取應(yīng)用程序的對(duì)象
UIApplication *app = [UIApplication sharedApplication];
//2.設(shè)置應(yīng)用程序圖標(biāo)的提醒數(shù)字
app.applicationIconBadgeNumber = 100;
//3.創(chuàng)建通知對(duì)象
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
//4.注冊(cè)用戶新通知
[app registerUserNotificationSettings:setting];
- 2.設(shè)置聯(lián)網(wǎng)的提示
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
- 3.設(shè)置狀態(tài)欄
(1).在iOS7之后,狀態(tài)欄默認(rèn)交給控制器來管理了(需要早info.plist里面進(jìn)行設(shè)置:先添加addrow 輸入大寫APP,徐澤最后一個(gè)View controller-based status bar appearance = NO),這樣就不再由控制器來管理狀態(tài)欄了,下面的代碼才能起到效果
還需要在info.plist
配置(只有配置了,下面的這句話才能將狀態(tài)欄隱藏)
app.statusBarHidden = YES;
(2).如果想用控制器來控制就用下面的方法
-(BOOL)prefersStatusBarHidden
{
return YES;
}
(3).手動(dòng)更改iOS狀態(tài)欄的顏色
- (void)setStatusBarBackgroundColor:(UIColor *)color
{
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)])
{
statusBar.backgroundColor = color;
}
}
-
4.打電話,發(fā)短息,打開網(wǎng)頁
//URL:資源的唯一路徑(唯一的標(biāo)識(shí)符) [app openURL:[NSURL URLWithString:@"www.baidu.com.cn"]];
二.講講main.m里面UIApplicationMain 底層的實(shí)現(xiàn)
//1.根據(jù)principalClassName傳遞的類名創(chuàng)建UIApplication對(duì)象
//2.創(chuàng)建UIApplication代理對(duì)象,給UIApplication 對(duì)象設(shè)置代理
//3.開啟主運(yùn)行事件循環(huán),處理事件
//4.加載info.plist,判斷下是否指定main,如果制定了,就會(huì)去加載
* @param nil UIApplication 類名或者子類的名稱 nil == @"UIApplication"
* @param class] UIApplication代理的類型的名稱
*
* NSStringFromClass 將類名轉(zhuǎn)化為字符串 == @"AppDelegate"
* @return NSStringFromClass :功能1.是為了有提示功能 2.避免輸入錯(cuò)誤
UIApplicationMain(int argc, char *argv[], NSString * __nullable principalClassName, NSString * __nullable delegateClassName);
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
四.最后附上一張圖