程序啟動(dòng)過(guò)程
1、 用戶打開(kāi)APP典徘,首先應(yīng)該執(zhí)行的是----> main.m系統(tǒng)文件中的main函數(shù)
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- main函數(shù)中執(zhí)行了一個(gè)UIApplicationMain函數(shù),程序正常退出時(shí)UIApplicationMain函數(shù)才返回
int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
- 這個(gè)函數(shù)中有四個(gè)參數(shù),argc什乙、argv可以不用過(guò)多關(guān)注被辑,主要看后面兩個(gè)燎悍。
principalClassName:指定應(yīng)用程序類名(app的象征),該類必須是UIApplication(或子類)盼理。如果為nil,則用UIApplication類作為默認(rèn)值谈山。
delegateClassName:指定應(yīng)用程序的代理類,該類必須遵守UIApplicationDelegate協(xié)議宏怔。
2奏路、 main函數(shù)中的UIApplicationMain函數(shù)就指明了程序下一步的去向---->AppDelegate
- UIApplicationMain函數(shù)會(huì)根據(jù)principalClassName創(chuàng)建UIApplication對(duì)象畴椰,根據(jù)delegateClassName創(chuàng)建一個(gè)delegate對(duì)象,并將該delegate對(duì)象賦值給UIApplication對(duì)象中的delegate屬性
- 接著會(huì)建立應(yīng)用程序的Main Runloop(事件循環(huán))鸽粉,進(jìn)行事件的處理(首先會(huì)在程序完畢后調(diào)用delegate對(duì)象的application:didFinishLaunchingWithOptions:方法)
3斜脂、 iOS程序啟動(dòng)完畢后,創(chuàng)建的第一個(gè)視圖控件就是---->UIWindow触机,接著創(chuàng)建控制器的view帚戳,最后將控制器的view添加到UIWindow上,控制器的view就會(huì)顯示在屏幕上儡首。
- UIWindow是一種特殊的UIView片任,通常在一個(gè)app中只會(huì)有一個(gè)UIWindow
最后用圖示意:
程序啟動(dòng)過(guò)程圖
關(guān)系圖