swift項目中的main函數(shù)

swift在AppDelegate.swift中用標簽@UIApplicationMain來取代了main函數(shù)钮科,現(xiàn)在可以自己創(chuàng)建main.swift來當做程序的入口示惊,這時候要將標簽@UIApplicationMain注釋百拓,main.swift代碼如下

import UIKit

UIApplicationMain(CommandLine.argc,
                  UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc)),
                  nil,
                  NSStringFromClass(AppDelegate.self))

方法講解

public func UIApplicationMain(_ argc: Int32, 
              _ argv: UnsafeMutablePointer<UnsafeMutablePointer<Int8>>!, 
              _ principalClassName: String?,
              _ delegateClassName: String?) -> Int32
  • argc:系統(tǒng)或者用戶傳入的參數(shù)
  • argv:系統(tǒng)或用戶傳入的實際參數(shù)
  • principalClassName:確定了主要應用程序類的名稱禽额,這個參數(shù)可為nil,這樣UIKit就會使用默認的程序類UIApplication
  • delegateClassName:程序自定義的代理類名枯冈,這個類負責系統(tǒng)和代碼之間的交互苹威,一般為AppDelegate昆咽,也可自定義子類。
UIApplicationMain

該部分介紹轉(zhuǎn)自木板釘釘的簡書
不管是通過 main.swift 文件還是 @UIApplicationMain 屬性牙甫,最后都會調(diào)用
UIApplicationMain 函數(shù)掷酗。其實我們的app只做了一件事,就是調(diào)
UIApplicationMain 函數(shù)窟哺。讓我們來看看 UIApplicationMain 函數(shù)都做了什么:
1.UIApplicationMain 創(chuàng)建app中的第一個實例泻轰,應用程序?qū)嵗?br> UIApplication.sharedUIApplicationMain 函數(shù)的第三個參數(shù)指定了應用程序?qū)嵗鶎俚念惽夜欤J該參數(shù)是 nil 糕殉,則其默認類就是 UIApplication亩鬼。如果你想subclass一個UIApplication殖告, 那就應該將 UIApplicationMain 函數(shù)的第三個參數(shù)指定為你的子類名字阿蝶,例如 NSStringFromClass(MyAppSubclass.self) .

2.UIApplicationMain 創(chuàng)建app中的第二個實例,app delegate黄绩。UIApplicationMain 函數(shù)的第四個參數(shù)指定了app delegate所屬的類羡洁,
NSStringFromClass(AppDelegate.self) 。如果使用 @UIApplicationMain 屬性爽丹,該屬性默認附加在 AppDelegate 類的聲明中筑煮,其意義與UIApplicationMain 函數(shù)一樣。

3.如果 Info.plist 文件指定了一個main storyboard粤蝎, UIApplicationMain 函數(shù)就載入storyboard并找到其中的initial view controller(或者說是storyboard的入口點)真仲,并實例化該view controller,這是創(chuàng)建的第三個實例初澎。對于Single View app模版秸应,這個實例就是 ViewController 類的實例,該類定義在 ViewController.swift 中碑宴。

4.如果存在main.storyboard文件软啼,UIApplicationMain 函數(shù)現(xiàn)在就該創(chuàng)建應用程序的window了,這是app中的第四個實例延柠,一個UIWindow類的實例(或者在AppDelegate中祸挪,可以替換為一個UIWindow子類的實例)。創(chuàng)建window實例后贞间,將其指定為AppDelegatewindow 屬性贿条,同時,將initial view controller實例的指定為window實例的 rootViewController屬性增热。

5.UIApplicationMain 現(xiàn)在開始處理AppDelegate實例并調(diào)用它的一些方法整以,如 application(_:didFinishLaunchingWithOptions:), 在該方法中钓葫,我們可以加入自己的代碼進行一些初始化的設定悄蕾,但不要進行一些比較耗時的工作,因為在這個時候础浮,我們的app界面還沒有顯示出來帆调。

6.如果存在main.storyboard文件, UIApplicationMain 函數(shù)開始調(diào)用UIWindow的實例方法 makeKeyAndVisible 豆同,這樣app界面就顯示出來了番刊。

7.在window顯示的過程中,將獲取root view controllermain view影锈, 如果view controllerview是通過storyboardxib文件獲取的芹务,那么該nib文件會被加載蝉绷。nib文件中的實例化并初始化,并稱為初始界面的對象枣抱,view及其subview將被放置在window中熔吗。view controllerviewDidLoad 方法被調(diào)用,在這里可以寫一些自己的代碼佳晶。

應用程序現(xiàn)在已經(jīng)啟動完成并開始運行桅狠,UIApplicationMain 函數(shù)仍然運行而且永不return,它繼續(xù)監(jiān)視用戶行為轿秧,管理event loop等中跌。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市菇篡,隨后出現(xiàn)的幾起案子漩符,更是在濱河造成了極大的恐慌,老刑警劉巖驱还,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗜暴,死亡現(xiàn)場離奇詭異,居然都是意外死亡铝侵,警方通過查閱死者的電腦和手機灼伤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咪鲜,“玉大人狐赡,你說我怎么就攤上這事∨北” “怎么了颖侄?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長享郊。 經(jīng)常有香客問我览祖,道長,這世上最難降的妖魔是什么炊琉? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任展蒂,我火速辦了婚禮,結(jié)果婚禮上苔咪,老公的妹妹穿的比我還像新娘锰悼。我一直安慰自己,他們只是感情好团赏,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布箕般。 她就那樣靜靜地躺著,像睡著了一般舔清。 火紅的嫁衣襯著肌膚如雪丝里。 梳的紋絲不亂的頭發(fā)上曲初,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音杯聚,去河邊找鬼臼婆。 笑死,一個胖子當著我的面吹牛械媒,可吹牛的內(nèi)容都是我干的目锭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼纷捞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了被去?” 一聲冷哼從身側(cè)響起主儡,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惨缆,沒想到半個月后糜值,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡坯墨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年寂汇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捣染。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡骄瓣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耍攘,到底是詐尸還是另有隱情榕栏,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布蕾各,位于F島的核電站扒磁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏式曲。R本人自食惡果不足惜妨托,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吝羞。 院中可真熱鬧兰伤,春花似錦、人聲如沸脆贵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卖氨。三九已至会烙,卻和暖如春负懦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柏腻。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工纸厉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人五嫂。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓颗品,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沃缘。 傳聞我的和親對象是個殘疾皇子躯枢,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

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