各個程序運行狀態時代理的回調:html
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
告訴代理進程啓動但還沒進入狀態保存
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
告訴代理啓動基本完成程序準備開始運行
- (void)applicationWillResignActive:(UIApplication *)application
當應用程序將要入非活動狀態執行,在此期間,應用程序不接收消息或事件,好比來電話了
- (void)applicationDidBecomeActive:(UIApplication *)application
當應用程序入活動狀態執行,這個恰好跟上面那個方法相反
- (void)applicationDidEnterBackground:(UIApplication *)application
當程序被推送到後臺的時候調用。因此要設置後臺繼續運行,則在這個函數裏面設置便可
- (void)applicationWillEnterForeground:(UIApplication *)application
當程序從後臺將要從新回到前臺時候調用,這個恰好跟上面的那個方法相反。
- (void)applicationWillTerminate:(UIApplication *)application
當程序將要退出是被調用,一般是用來保存數據和一些退出前的清理工做。這個須要要設置UIApplicationExitsOnSuspend的鍵值。
- (void)applicationDidFinishLaunching:(UIApplication*)application
當程序載入後執行
ios
在上面8個方法對應的方法中鍵入NSLog打印。app
如今啓動程序看看執行的順序:函數
啓動程序
lifeCycle[40428:11303] willFinishLaunchingWithOptions
lifeCycle[40428:11303] didFinishLaunchingWithOptions
lifeCycle[40428:11303] applicationDidBecomeActive性能
按下home鍵spa
lifeCycle[40428:11303] applicationWillResignActive
lifeCycle[40428:11303] applicationDidEnterBackground
代理
雙擊home鍵,再打開程序htm
lifeCycle[40428:11303] applicationWillEnterForeground
lifeCycle[40428:11303] applicationDidBecomeActiveblog
視圖的生命週期其實能夠理解爲Load-Present-Hidden(加載-展示-隱藏)三個階段,若是從ViewController中方法中執行的順序來看,順序應該是這樣的:生命週期
alloc -> initWithNibName -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear -> dealloc
注意viewWillUnload和viewDidUnload已經在ios6被廢棄了,由於Clearing references to views is no longer necessary。
注意1.沒有viewWillLoad。
注意2.viewDidLoad和viewDidUnload並非成對的。
loadView:通常狀況下不用用到,除非須要重寫設置View;
viewDidLoad/dealloc:視圖加載完成以後的設置和視圖銷燬的時候調用;
viewWillAppear/viewWillDisappear:視圖即將呈現和視圖即將消失;
viewDidAppear/viewDidDisappear:視圖展示在屏幕的時候和視圖徹底消失在屏幕的時候調用,默認不作任何操做;
注意,不要在loadView中調用父類方法[super loadView],由於這會影響CPU性能。
注意2,切換先後臺不會調用viewWillAppear