(一)iOS程序運行原理

一、main函數(shù)

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

iOS程序首先由main函數(shù)執(zhí)行泛烙,由如上代碼可以看到main函數(shù)執(zhí)行后程序進入UIApplicationMain函數(shù)。

二、UIApplicationMain函數(shù)

// If nil is specified for principalClassName, the value for NSPrincipalClass from the Info.plist is used. If there is no
// NSPrincipalClass key specified, the UIApplication class is used. The delegate class will be instantiated using init.
UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString * __nullable principalClassName, NSString * __nullable delegateClassName);

由如上UIApplicationMain函數(shù)原型可以看到宦言,函數(shù)的第三個參數(shù)princlepalClass是應(yīng)用程序類UIApplication,第四個參數(shù)是程序代理類AppDelegate商模。在UIApplicationMain中主要做三件事:

  • 創(chuàng)建UIApplication對象
  • 創(chuàng)建AppDelegate對象
  • 開啟事件循環(huán)

三奠旺、UIApplication

UIApplicationMain執(zhí)行后先初始化UIApplication對象。UIApplication對象是應(yīng)用程序的核心施流,每個App只有一個UIApplication實例(通過[UIApplication shareApplication]獲认炀巍)。UIApplication的最主要作用作用是作為一個應(yīng)用程序的核心瞪醋,程序事件首先到達UIApplication中忿晕,然后再由UIApplication進行分發(fā)。另外UIApplication還提供openURL打開其他應(yīng)用程序银受、注冊遠程践盼、本地通知等功能鸦采。

四、AppDelegate

UIApplication初始化后進入Appdelegate的didFinishLaunchingWithOptions函數(shù)中咕幻,此時應(yīng)用程序界面真正開始創(chuàng)建渔伯。Appdelegate顧名思義是程序代理類,它的作用是處理一些App生命周期中出現(xiàn)的重要事件肄程,如程序狀態(tài)發(fā)生改變(前臺到后臺等)锣吼,接收到遠程、本地通知绷耍,初始化程序視圖等吐限。簡言之,UIApplication是接收事件褂始,而事件處理則交由程序代理類AppDelegate執(zhí)行诸典。

當程序運行到Appdelegate的didFinishLaunchingWithOptions時會創(chuàng)建UIWindow,我們把自定義ViewController加入UIWindow中崎苗,此時程序視圖真正開始建立狐粱。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市胆数,隨后出現(xiàn)的幾起案子肌蜻,更是在濱河造成了極大的恐慌,老刑警劉巖必尼,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒋搜,死亡現(xiàn)場離奇詭異,居然都是意外死亡判莉,警方通過查閱死者的電腦和手機豆挽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來券盅,“玉大人帮哈,你說我怎么就攤上這事∶潭疲” “怎么了娘侍?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泳炉。 經(jīng)常有香客問我憾筏,道長,這世上最難降的妖魔是什么花鹅? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任氧腰,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘容贝。我一直安慰自己,他們只是感情好之景,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布斤富。 她就那樣靜靜地躺著,像睡著了一般锻狗。 火紅的嫁衣襯著肌膚如雪满力。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天轻纪,我揣著相機與錄音油额,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的乏矾。 我是一名探鬼主播骇笔,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼反惕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤锰蓬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眯漩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芹扭,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年赦抖,在試婚紗的時候發(fā)現(xiàn)自己被綠了舱卡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡摹芙,死狀恐怖灼狰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浮禾,我是刑警寧澤交胚,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站盈电,受9級特大地震影響蝴簇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匆帚,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一熬词、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦互拾、人聲如沸歪今。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寄猩。三九已至,卻和暖如春骑疆,著一層夾襖步出監(jiān)牢的瞬間田篇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工箍铭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泊柬,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓诈火,卻偏偏與公主長得像兽赁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子柄瑰,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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