任何一個程序,無論是基于mac OS 還是iOS,程序都是從Main.m文件的main函數(shù)開始執(zhí)行的。
UIApplocationMain在程序入口函數(shù)main函數(shù)中調(diào)用,主要實現(xiàn)了3個功能:
1:創(chuàng)建應用程序(UIApplication)實例
2:創(chuàng)建應用程序代理(ApDelegate)實例
3:建立事件循環(huán)(runloop:死循環(huán),不斷檢測程序運行狀態(tài),是夠被觸摸、晃動等)
UIApplicationDelegate的代理方法
pragma mark 程序加載完畢(啟動完畢)就會調(diào)用一次
//告訴delegate程序啟動即將完成,程序準備要運行。(delegate實現(xiàn)這個方式時,要創(chuàng)建window對象,將程序內(nèi)容通過window呈獻給用戶)
(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
pragma mark 應用程序失去焦點的時候調(diào)用(一個app如果失去焦點,就不能跟用戶進行交互)
//告訴delegate應用程序即將進入非活躍狀態(tài)(暫停游戲、停止timer等)
(void)applicationWillResignActive:(UIApplication *)application
pragma mark 程序進入后臺就會調(diào)用
//告訴delegate應用程序已經(jīng)進入到了后臺(存儲用戶數(shù)據(jù)、釋放一些公共資源、停止timer等)
(void)applicationDidEnterBackground:(UIApplication *)application
pragma mark 程序即將進入前臺的時候調(diào)用
//告訴delegate應用程序即將進入前臺(恢復所有進入后臺暫停的服務)
(void)applicationWillEnterForeground:(UIApplication *)application
pragma mark 應用程序獲得焦點的時候調(diào)用(一個app只有獲得焦點之后才能跟用戶進行交互)
//告訴delegate應用程序即將進入活躍狀態(tài)(從新執(zhí)行被暫停的服務)
(void)applicationDidBecomeActive:(UIApplication *)application
pragma mark 程序即將被關(guān)閉的時候可能會被調(diào)用(應用程序即將退出,從內(nèi)存中清除,iOS4之后有applicationDidEnterBackground:替代)
(void)applicationWillTerminate:(UIApplication *)application
pragma mark 程序接收到內(nèi)存警告都會調(diào)用
(void)applicationDidReceiveMemoryWarning:(UIApplication *)application