iOS程序啟動過程

一屠阻、啟動完整過程


1.main函數(shù)main.m

2.UIApplicationMain

  • 創(chuàng)建UIApplication對象
  • 創(chuàng)建UIApplication的delegate對象

3.delegate對象開始處理(監(jiān)聽)系統(tǒng)事件(沒有storyboard)

  • 程序啟動完畢的時候, 就會調用代理的:didFinishLaunchingWithOptions:方法
  • 在application:didFinishLaunchingWithOptions:中創(chuàng)建UIWindow* 創(chuàng)建和設置UIWindow的rootViewController
  • 顯示窗口

4.根據(jù)Info.plist獲得最主要storyboard的文件名,加載最主要的storyboard(有storyboard)

  • 創(chuàng)建UIWindow
  • 創(chuàng)建和設置UIWindow的rootViewController
  • 顯示窗口

二灌侣、程序啟動原理

main函數(shù)中執(zhí)行了一個UIApplicationMain這個函數(shù)

int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);

argc堕战、argv:直接傳遞給UIApplicationMain進行相關處理即可

principalClassName:指定應用程序類名(app的象征),該類必須是UIApplication(或子類)庐冯。如果為nil,則用UIApplication類作為默認值

delegateClassName:指定應用程序的代理類,該類必須遵守UIApplicationDelegate協(xié)議

UIApplicationMain函數(shù)會根據(jù)principalClassName創(chuàng)建UIApplication對象,根據(jù)delegateClassName創(chuàng)建一個delegate對象五鲫,并將該delegate對象賦值給UIApplication對象中的delegate屬性

接著會建立應用程序的Main Runloop(事件循環(huán)),進行事件的處理(首先會在程序完畢后調用delegate對象的application:didFinishLaunchingWithOptions:方法)

程序正常退出時UIApplicationMain函數(shù)才返回

int main(int argc, char * argv[]){ @autoreleasepool { 
/**
* argc: 系統(tǒng)或者用戶傳入的參數(shù)個數(shù)
* argv: 系統(tǒng)或者用戶傳入的實際參數(shù) 
* 1.根據(jù)傳入的第三個參數(shù)創(chuàng)建UIApplication對象 
* 2.根據(jù)傳入的第四個產生創(chuàng)建UIApplication對象的代理
* 3.設置剛剛創(chuàng)建出來的代理對象為UIApplication的代理 
* 4.開啟一個事件循環(huán) 
**/ 
return UIApplicationMain(argc, argv, @"UIApplication", @"YYAppDelegate"); }}

二岔擂、UIApplication

1位喂、簡介

  • UIApplication對象是應用程序的象征浪耘,一個UIApplication對象就代表一個應用程序。
  • 每一個應用都有自己的UIApplication對象塑崖,而且是單例的七冲,如果試圖在程序中新建一個UIApplication對象,那么將報錯提示规婆。
  • 通過[UIApplication sharedApplication]可以獲得這個單例對象
  • 一個iOS程序啟動后創(chuàng)建的第一個對象就是UIApplication對象澜躺,且只有一個(通過代碼獲取兩個UIApplication對象,打印地址可以看出地址是相同的)抒蚜。
  • 利用UIApplication對象掘鄙,能進行一些應用級別的操作

2、應用級別的操作

1.設置應用程序圖標右上角的紅色提醒數(shù)字

  @property(nonatomic) NSInteger applicationIconBadgeNumber;

2.設置聯(lián)網指示器的可見性

@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;

3.管理狀態(tài)欄

  • 通過UIViewController管理
    在iOS7中嗡髓,默認情況下操漠,狀態(tài)欄都是由UIViewController管理的,UIViewController可以輕松管理狀態(tài)欄的可見性和樣式(每一個UIViewController都可以擁有自己不同的狀態(tài)欄)饿这。
 - (UIStatusBarStyle)preferredStatusBarStyle; //狀態(tài)欄的樣式    
-(BOOL)prefersStatusBarHidden;//狀態(tài)欄的可見性  
  • 通過UIApplication管理(一個應用程序的狀態(tài)欄都由它統(tǒng)一管理)


//設置狀態(tài)欄是否隱藏
 app.statusBarHidden=YES; 
//設置狀態(tài)欄是否隱藏+動畫效果 
[app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

如果狀態(tài)欄需隱藏浊伙,樣式不一樣那就用UIViewController進行管理,UIApplication可以提供動畫效果长捧。

4.openURL (統(tǒng)一資源定位符)

打電話  UIApplication *app = [UIApplicationsharedApplication]; [app openURL:[NSURLURLWithString:@"tel://10086"]];
發(fā)短信  [app openURL:[NSURLURLWithString:@"sms://10086"]];
發(fā)郵件  [app openURL:[NSURLURLWithString:@"mailto://12345@qq.com"]];
打開一個網頁資源 [app openURL:[NSURLURLWithString:@"http://ios.itcast.cn"]];
打開其他app程序

URL格式:協(xié)議頭://主機地址/資源路徑

2嚣鄙、****UIApplication Delegate****

在app受到干擾時,會產生一些系統(tǒng)事件唆姐,這時UIApplication會通知它的delegate對象拗慨,讓delegate代理來處理這些系統(tǒng)事件。


啟動與代理:


感謝:http://www.cnblogs.com/wendingding/p/3766347.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末奉芦,一起剝皮案震驚了整個濱河市赵抢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌声功,老刑警劉巖烦却,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異先巴,居然都是意外死亡其爵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門伸蚯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摩渺,“玉大人,你說我怎么就攤上這事剂邮∫』茫” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绰姻。 經常有香客問我枉侧,道長,這世上最難降的妖魔是什么狂芋? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任榨馁,我火速辦了婚禮,結果婚禮上帜矾,老公的妹妹穿的比我還像新娘翼虫。我一直安慰自己,他們只是感情好黍特,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布蛙讥。 她就那樣靜靜地躺著锯蛀,像睡著了一般灭衷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旁涤,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天翔曲,我揣著相機與錄音,去河邊找鬼劈愚。 笑死瞳遍,一個胖子當著我的面吹牛,可吹牛的內容都是我干的菌羽。 我是一名探鬼主播掠械,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼注祖!你這毒婦竟也來了猾蒂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤是晨,失蹤者是張志新(化名)和其女友劉穎肚菠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罩缴,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡蚊逢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了箫章。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烙荷。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖檬寂,靈堂內的尸體忽然破棺而出终抽,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布拿诸,位于F島的核電站扒袖,受9級特大地震影響,放射性物質發(fā)生泄漏亩码。R本人自食惡果不足惜季率,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望描沟。 院中可真熱鬧飒泻,春花似錦、人聲如沸吏廉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽席覆。三九已至史辙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間佩伤,已是汗流浹背聊倔。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留生巡,地道東北人耙蔑。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像孤荣,于是被迫代替她去往敵國和親甸陌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容