概要
- 進(jìn)入main函數(shù)
- 執(zhí)行
UIApplicationMain
函數(shù)- 創(chuàng)建UIApplication對(duì)象
- 創(chuàng)建UIApplicationDelegate對(duì)象并復(fù)制
- 讀取配置文件中的info.plist童谒,設(shè)置程序啟動(dòng)的一些屬性
- 創(chuàng)建應(yīng)用程序的
main runloop
循環(huán)
- UIapplicationDelegate對(duì)象開始處理監(jiān)聽到的事件
- 程序啟動(dòng)成功后首先調(diào)用
application:didFinishLaunchingWithOtions:
方法
如果info.plist文件中配置了啟動(dòng)storyboard文件名,則加載storyboard文件沪羔。如果沒有配置饥伊,則根據(jù)代碼來創(chuàng)建UIWindow-rootViewController。
- 程序啟動(dòng)成功后首先調(diào)用
UIApplication
UIApplication代表一個(gè)應(yīng)用程序蔫饰,每個(gè)應(yīng)用程序都有一個(gè)UIApplication全局對(duì)象琅豆,通過[UIApplication sharedApplication]
獲得這個(gè)對(duì)象,進(jìn)行一些應(yīng)用級(jí)的操作死嗦。UIApplication是一個(gè)應(yīng)用程序的開始趋距,它維護(hù)了一個(gè)在本應(yīng)用中打開的window列表粒氧,負(fù)責(zé)初始化顯示UIWindow越除,負(fù)責(zé)加載應(yīng)用程序的第一個(gè)UIView到UIWindow中。UIApplication還被賦予一個(gè)代理對(duì)象外盯,在實(shí)際編程中摘盆,我們一般是和代理對(duì)象UIApplicationDelegate
打交道,UIApplication負(fù)責(zé)監(jiān)聽接收事件饱苟,而由UIApplicationDelegate決定應(yīng)用程序如何去響應(yīng)這些事件孩擂。
UIApplicationDelegate
所有的移動(dòng)操作都有一個(gè)特點(diǎn):很容易收到打擾,如來電箱熬、鎖屏等类垦,會(huì)導(dǎo)致app進(jìn)入后臺(tái)或者被終止狈邑。app在受到干擾時(shí)會(huì)產(chǎn)生一些事件,UIApplication會(huì)監(jiān)聽這些事件蚤认,UIApplicationDelegate負(fù)責(zé)處理這些事件米苹。主要包括如下事件:
- 程序加載完畢
application:didFinishLauchingWithOpetions:
- 程序?qū)⑹ソ裹c(diǎn)
applicationWillResignActive:
- 程序進(jìn)入后臺(tái)
applicationDidEnterBackground:
- 程序?qū)⒁氐角芭_(tái)
applicationWillEnterForeground:
- 程序重新獲取焦點(diǎn)
applicationDidBecomeActive:
- 程序即將退出
applicationWillTerminate:
備注:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //全屏window
self.window.backgroundColor = [UIColor whiteColor]; //白色背景
[self.window makeKeyAndVisible]; //
return YES;
}
UIViewController的生命周期
- alloc
- init
- loadView
- ViewDidLoad 載入完成可以進(jìn)行自定義數(shù)據(jù)以及動(dòng)態(tài)創(chuàng)建控件
- ViewWillAppear
- ViewDidAppear
- ViewWillDisappear
- ViewDidDisappear
- dealloc
注意:發(fā)生內(nèi)存警告的時(shí)候,如果本視圖不是當(dāng)前屏幕正在顯示的視圖砰琢,viewDidUnload
將會(huì)被執(zhí)行蘸嘶。本視圖的所有子視圖將會(huì)被銷毀,以釋放內(nèi)存陪汽。