點擊App以后~.jpg
App啟動的完整過程
- main函數(shù)
- UIApplicationMain函數(shù)
- 創(chuàng)建UIApplication對象
- 創(chuàng)建UIApplication的delegate對象
- delegate對象開始處理(監(jiān)聽)系統(tǒng)事件
- 程序啟動完畢就會調(diào)用代理的application:didFinishLaunchingWithOptions: 方法
- 在application:didFinishiLaunchingWithOptions:中創(chuàng)建UIWindow
- 創(chuàng)建和設(shè)置UIWindow的rootViewController
- 顯示窗口
- 如果有storyboard琐馆,則根據(jù)Info.plist獲得最主要storyboard的文件名,加載最主要的storyboard
- 創(chuàng)建UIWindow
- 創(chuàng)建和設(shè)置UIWindow的rootViewController
- 顯示窗口
AppDelegate的代理方法
//程序已經(jīng)啟動完成
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ;
//程序?qū)⒁ソ裹c
- (void)applicationWillResignActive:(UIApplication *)application ;
//程序已經(jīng)進入后臺
- (void)applicationDidEnterBackground:(UIApplication *)application ;
//程序?qū)⒁M入前臺
- (void)applicationWillEnterForeground:(UIApplication *)application ;
//程序已經(jīng)獲得焦點
- (void)applicationDidBecomeActive:(UIApplication *)application ;
//內(nèi)存警告檩小,可能要終止程序剥纷,清除不需要再使用的內(nèi)存
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application ;
//程序?qū)⒁顺?- (void)applicationWillTerminate:(UIApplication *)application ;
AppDelegate不同情景下的加載順序
- 程序啟動:依次調(diào)用已經(jīng)啟動完成方法和已經(jīng)獲得焦點方法
- 程序從前臺退出到后臺:依次調(diào)用將要失去焦點方法和已經(jīng)進入后臺方法
- 程序從后臺進入到前臺:依次調(diào)用將要進入前臺方法和已經(jīng)獲得焦點方法
- 雙擊Home鍵切換程序:雙擊Home鍵時會調(diào)用將要失去焦點方法颤芬,選擇其他應(yīng)用時會調(diào)用已經(jīng)進入后臺方法
- 在前臺雙擊Home鍵殺死程序:雙擊Home鍵時會調(diào)用將要失去焦點方法渣刷,上滑殺死程序時會調(diào)用已經(jīng)進入后臺方法和將要退出方法
- 從其他程序前臺雙擊Home鍵殺死程序:只會調(diào)用將要退出方法
- 下拉通知欄或上拉工具欄:只會調(diào)用將要失去焦點方法