iOS main函數(shù)解析

我們都知道oc程序的入口是main函數(shù)糕篇,如下:

int main(int argc, char * argv[]) {

@autoreleasepool {

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

}

}

main函數(shù)的返回值是一個(gè)int類型 那么我們定義一個(gè)變量接收安聘,并打印慈缔,看看這個(gè)參數(shù)是什么骑歹,能不能打印?

int main(int argc, char * argv[]) {

@autoreleasepool {

int a = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

NSLog(@"a=%d",a);

return a;

}

}

? ? ? ?經(jīng)過測(cè)試茫叭,日志是沒有輸出的状勤,說明UIApplicationMain是個(gè)死循環(huán),那么先看一下UIApplicationMain參數(shù)都是什么畏铆。

argh 代表的是長度雷袋,argv代表的是char 型數(shù)組吉殃,系統(tǒng)默認(rèn)傳進(jìn)來的.

然后主要分析后面兩個(gè)參數(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方法定義辞居,發(fā)現(xiàn)后面兩個(gè)參數(shù)都是NSString類型的,根據(jù)參數(shù)字面意思都是類名蛋勺,第一個(gè)默認(rèn)傳nil,那具體代表的是哪個(gè)類瓦灶?我們先從最后一個(gè)參數(shù)看起,最后一個(gè)是一個(gè)代理類類名抱完,即AppDelegate的類名贼陶,NSStringFromClass([AppDelegate class]等價(jià)于@“AppDelegate”,后面這個(gè)是一個(gè)代理類,這個(gè)代理是實(shí)現(xiàn)的是誰的代理呢碉怔?查看AppDelegate.h發(fā)現(xiàn)是實(shí)現(xiàn)的UIApplication的代理烘贴,再根據(jù)蘋果給出的注釋來看,當(dāng)這個(gè)類名為空時(shí)撮胧,先從Info.plist中讀取NSPrincipalClass屬性值桨踪,如果這個(gè)屬性值不存在,則使用UIApplication類芹啥,說明最后兩個(gè)參數(shù)一個(gè)是傳UIApplication單例類锻离,一個(gè)是實(shí)現(xiàn)UIApplication的代理AppDelegate,所以UIApplicationMain也可以改為UIApplicationMain(argc, argv, @"UIApplication", @"AppDelegate");其中第三個(gè)參數(shù)也可以是UIApplication類的子類墓怀。

我們?cè)倏匆幌耈IApplicationMain死循環(huán)是什么?其實(shí)就是我們所說的runloop,那么內(nèi)部開啟死循環(huán)runloop的目的是什么汽纠?

1.保證當(dāng)前線程(主線程)不被退出

2.負(fù)責(zé)監(jiān)聽事件(包括觸摸事件、網(wǎng)絡(luò)等等)

ps:目前只知道這個(gè)兩種作用傀履,有知道的可告解虱朵。

? ? ? ?以上是我對(duì)main函數(shù)的一點(diǎn)見解,如有不對(duì)的地方或有好的見解請(qǐng)?zhí)岢銎『簦瑲g迎大家批評(píng)指正~~~

? ? ? ?雖然接觸iOS這么久卧秘,一直沒有研究過main函數(shù)的工作原理及參數(shù)意義,技術(shù)也一直沒能提高官扣,寫下此文章記錄一下自己的學(xué)習(xí)成果翅敌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市惕蹄,隨后出現(xiàn)的幾起案子蚯涮,更是在濱河造成了極大的恐慌,老刑警劉巖卖陵,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遭顶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泪蔫,警方通過查閱死者的電腦和手機(jī)棒旗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩荣,“玉大人铣揉,你說我怎么就攤上這事〔筒埽” “怎么了逛拱?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長台猴。 經(jīng)常有香客問我朽合,道長俱两,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任曹步,我火速辦了婚禮宪彩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讲婚。我一直安慰自己毯焕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布磺樱。 她就那樣靜靜地躺著纳猫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竹捉。 梳的紋絲不亂的頭發(fā)上芜辕,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音块差,去河邊找鬼侵续。 笑死,一個(gè)胖子當(dāng)著我的面吹牛憨闰,可吹牛的內(nèi)容都是我干的状蜗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼鹉动,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼轧坎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泽示,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤缸血,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后械筛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捎泻,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年埋哟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笆豁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赤赊,死狀恐怖闯狱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砍鸠,我是刑警寧澤扩氢,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布耕驰,位于F島的核電站爷辱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饭弓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一双饥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弟断,春花似錦咏花、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刘急,卻和暖如春棚菊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叔汁。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來泰國打工统求, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人据块。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓码邻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親另假。 傳聞我的和親對(duì)象是個(gè)殘疾皇子像屋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

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