iOS之UIApplication的功能,代理和單例的簡單介紹

本章重點(diǎn)分為三個內(nèi)容:
  • UIApplication功能
  • UIApplication單例
  • UIApplication代理

UIApplication功能

  • 1.設(shè)置應(yīng)用提醒數(shù)字

  • 獲取UIApplication對象
    UIApplication *ap = [UIApplication sharedApplication];

  • 在設(shè)置之前, 要注冊一個通知,從ios8之后,都要先注冊一個通知對象.才能夠接收到提醒.
    UIUserNotificationSettings *notice = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];

  • 注冊通知對象
    [ap registerUserNotificationSettings:notice];

  • 設(shè)置提醒數(shù)字
    ap.applicationIconBadgeNumber = 10;

    AEC51C19-5DDD-4E2B-AABD-EBFC908B07FD.png

  • 2.設(shè)置連網(wǎng)狀態(tài)
    ap.networkActivityIndicatorVisible = YES;

    C50342F7-2663-4D76-BDA0-58052CABFF0A.png

  • 3.設(shè)置狀態(tài)欄
    應(yīng)用程序的狀態(tài)欄,默認(rèn)是交給控制器來管理的.
    控制器提供的方法,可以直接重寫這個方法
    在控制器當(dāng)中設(shè)置狀態(tài)欄樣式

     return UIStatusBarStyleLightContent;
}```
![C9C2A0E2-6F42-4564-92CD-38058128E763.png](http://upload-images.jianshu.io/upload_images/1701439-4b1ac43572f1c343.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
隱藏狀態(tài)欄,通過控制器的方式.同樣實(shí)現(xiàn)方法:

返回NO時為不隱藏
返回YES時為顯示
-(BOOL)prefersStatusBarHidden{
return NO;
}通常在開發(fā)當(dāng)中都是應(yīng)用程序來管理狀態(tài)欄的.來做統(tǒng)一管理,不然的話, 會有很多個控制器.會非常的麻煩. 想要讓應(yīng)用程序管理狀態(tài)欄,要在info.plist當(dāng)中進(jìn)行配置, 添加一個key值:是最后一個View controller-based status bar appearance設(shè)置為NO```.就是應(yīng)用程序來管理了.

  • 通過UIApplication來管理狀態(tài).
    1.獲取UIApplication
    UIApplication *ap = [UIApplication sharedApplication];
    2.設(shè)置狀態(tài)欄樣式.
    ap.statusBarStyle = UIStatusBarStyleLightContent;
    3.設(shè)置狀態(tài)的隱藏
    ap.statusBarHidden = YES;

  • 4.跳轉(zhuǎn)網(wǎng)頁

URL:協(xié)議頭://域名```
應(yīng)用程序通過協(xié)議頭的類型,去打開相應(yīng)的軟件.
```NSURL *url =[NSURL URLWithString:@"http://www.baidu.com"];
[ap openURL:url];```

 - 打電話
```[application openURL:[NSURL URLWithString:@"tel://10086"]];```
 - 發(fā)短信
```[app openURL:[NSURL URLWithString:@"sms://10086"]];```

###UIApplication單例
- 什么是```UIApplication```
```UIApplication```對象是應(yīng)用程序的象征.
每一個應(yīng)用都有自己的```UIApplication```對象,這個對象是系統(tǒng)自動幫我們創(chuàng)建的, 它是一個單例對象.
一個```iOS```程序啟動后創(chuàng)建的第一個對象就是```UIApplication```對象
我們只能通過```[UIApplication sharedApplication]```獲得這個單例對象,不能夠手動去創(chuàng)建它.

- ```UIApplication```作用
利用```UIApplication```對象,能進(jìn)行一些應(yīng)用級別的操作.
 - 可以設(shè)置應(yīng)用程序圖標(biāo)右上角的紅色提醒數(shù)字
 - 設(shè)置聯(lián)網(wǎng)指示器的可見性
 - 可以設(shè)置應(yīng)用程序的狀態(tài)欄
 - 進(jìn)行應(yīng)用之間的跳轉(zhuǎn).

- 模仿```UIApplication```單例.
 - 要求:程序一啟動就創(chuàng)建創(chuàng)建對象.
 - 創(chuàng)建的對象只能通過```share```的方式獲取對象.
 - 不能夠進(jìn)行```alloc``` 操作,當(dāng)執(zhí)行```alloc```時, 程序發(fā)生崩潰

 - 1.程序一啟動的時候就創(chuàng)建對象.
當(dāng)類被加載到內(nèi)存的時候就會調(diào)用```load```的方法,它會比```main```優(yōu)先調(diào)用
```static Persion *_instance;
+(void)load{
     想要保存創(chuàng)建的對象, 要用成員屬性,但是現(xiàn)在是類方法, 沒有辦法訪問成員屬性.
     所以搞了一個static的靜態(tài)變量進(jìn)行保存
     創(chuàng)建對象
     _instance = [[self alloc] init];
}
  • 2.保證調(diào)用alloc時會產(chǎn)生異常.
    重寫系統(tǒng)的是alloc方法
     當(dāng)調(diào)用alloc方法時,先查看一下_instance有沒有值,如果已經(jīng)有值的話,直接拋出異常.
     if(_instance){
          NSException *exception = [NSException exceptionWithName:
          @"NSInternalInconsistencyException"
          reason:
          @"There can only be one Persion instance." userInfo:nil];
          拋出異常
          [exception raise];
     }
          保持系統(tǒng)的做法.
          return [super alloc];
     }
  • 3.通過share方式獲取對象
     return _instance
}```

###UIApplication代理
所有的移動操作系統(tǒng)都有個致命的缺點(diǎn):```app```很容易受到打擾枯冈。
比如一個來電或者鎖屏?xí)?dǎo)致```app```進(jìn)入后臺甚至被終止
還有很多其它類似的情況會導(dǎo)致```app```受到干擾撒妈,在```app```受到干擾時打掘,會產(chǎn)生一些系統(tǒng)事件,
這時```UIApplication```會通知它的```delegate```對象妄讯,讓```delegate```代理來處理這些系統(tǒng)事件
 - ```delegate```可處理的事件包括:
  - 應(yīng)用程序的生命周期事件(如程序啟動和關(guān)閉)
  - 系統(tǒng)事件(如來電)
  - 內(nèi)存警告
  - ...
 - ```UIApplication```會在程序一啟動創(chuàng)建一個遵守```UIApplicationDelegate```代理.
這個就是我們程序一創(chuàng)建時的```AppDelegate```類.```AppDelegate```就是遵守了```UIApplicationDelegate```協(xié)議.
在這個類中很定義很多監(jiān)聽系統(tǒng)事件的方法.同時也定義了一些應(yīng)用程序的生命周期方法.

- 主要方法有:
應(yīng)用程序的生命周期
 - 應(yīng)用程序啟動完成的時候調(diào)用
```- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"%s",__func__);
return YES;
}
  • 當(dāng)我們應(yīng)用程序即將失去焦點(diǎn)的時候調(diào)用
NSLog(@"%s",__func__);
}
  • 當(dāng)我們應(yīng)用程序完全進(jìn)入后臺的時候調(diào)用
NSLog(@"%s",__func__);
}
  • 當(dāng)我們應(yīng)用程序即將進(jìn)入前臺的時候調(diào)用
NSLog(@"%s",__func__);
}
  • 當(dāng)我們應(yīng)用程序完全獲取焦點(diǎn)的時候調(diào)用
    只有當(dāng)一個應(yīng)用程序完全獲取到焦點(diǎn),才能與用戶交互.
NSLog(@"%s",__func__);
}
  • 當(dāng)我們應(yīng)用程序即將關(guān)閉的時候調(diào)用
NSLog(@"%s",__func__);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逢勾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子次坡,更是在濱河造成了極大的恐慌,老刑警劉巖画畅,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砸琅,死亡現(xiàn)場離奇詭異,居然都是意外死亡夜赵,警方通過查閱死者的電腦和手機(jī)明棍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門乡革,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寇僧,“玉大人,你說我怎么就攤上這事沸版∴铱” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵视粮,是天一觀的道長细办。 經(jīng)常有香客問我,道長蕾殴,這世上最難降的妖魔是什么笑撞? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮钓觉,結(jié)果婚禮上茴肥,老公的妹妹穿的比我還像新娘。我一直安慰自己荡灾,他們只是感情好瓤狐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著批幌,像睡著了一般础锐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荧缘,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天皆警,我揣著相機(jī)與錄音,去河邊找鬼截粗。 笑死信姓,一個胖子當(dāng)著我的面吹牛恢着,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播财破,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼掰派,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了左痢?” 一聲冷哼從身側(cè)響起靡羡,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俊性,沒想到半個月后略步,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忍捡,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嫉拐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了魄藕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片典徊。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡杭煎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卒落,到底是詐尸還是另有隱情羡铲,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布儡毕,位于F島的核電站也切,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏腰湾。R本人自食惡果不足惜雷恃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望费坊。 院中可真熱鬧倒槐,春花似錦、人聲如沸葵萎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羡忘。三九已至谎痢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卷雕,已是汗流浹背节猿。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滨嘱。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓峰鄙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親太雨。 傳聞我的和親對象是個殘疾皇子吟榴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容