### iPhone開發概述
iOS 加載 app 將要結束時並且 app 程序差不多已經准備好運行的時候會調用這個方法,通常我們需要使用這個方法來完成 app 的初始化和最後設置的一些微調.這個方法調用發生在 app 的 window 和 UI 之前.
- (BOOL)application:(UIApplication *)application didFinishLanunchingWithOption:(NSDictionary *)LaunchOptions
當應用程序將要進入非活動狀態執行,在此期間,應用程序不接受消息或事件,比如說來電話了、鎖屏。通常在這個方法裡實現: 停止 timer 和其他周期性的任務、停止任何正在運行的請求、暫停視頻的播放、如果是游戲就暫停它、減少OpenGL ES的幀率、刮起任何分發的隊列和不重要的操作隊列(你可以處理網絡請求或者其他時間敏感的後台任務).
- (void)appliWillResignActive:(UIApplication *)application
當應用進入活動狀態執行,這個狀態剛好和上面的那個方法相反,需要實現任務的重新開始,比如說重新開始 timer, 繼續分發隊列,提高 OpenGL ES 的幀率.不過游戲要回到暫停狀態,不能自動開始.
- (void)applicationDidBecamActive:(UIApplication *)appliction
當程序被推送到後台的時候調用.所以要設置後台繼續運行,則在這個函數裡面設置即可.在這個方法需要實現:保存用戶數據或狀態信息,所有沒有寫到磁盤的文件或信息,在進汝後台時,最後都寫到磁盤去,因為程序可能在後台被殺死,釋放盡可能釋放的內存
- (void)applicationDidEnterBackground:(UIApplication *)application
當程序從後台將要程序回到前台時調用,這個剛還與上面的那個方法相反.
- (void)applicationWillEnterForeground(UIApplication *)application
當程序將要退出時被調用通常使用來保存數據和一些退出前的清理工作.這個需要設置 UIApplicationExitsOnSuspend的鍵值.
- (void)applicationWillTerminate:(UIApplication *)application
# import
# import PNAppDelegate.h
int main(int argc, char * argv[])
{
@autoreleasepool{
return UIApplicationMain(argc,argv,nil,NSStringFromClass([PNAppDelegate class]));
}
}
UIApplicationMain 函數有四個函數,你不需要改變這些參數值,不過我們需要理解這些參數和程序是如何開始的: argc 和 argv 參數包含了系統帶過來的啟動時間.第三個參數確定了主要應用程序類的名稱,這個參數指定為 nil, 這樣 UIKit 就會使用默認的 UIApplication 類創建對象.第四個參數是程序自定義的代理類名,這個類負責系統和代碼之間的交互.它一般在 Xcode 新建項目是會自動生成.
另外 UIApplicationMain 函數加載了程序主界面的文件.雖然這個函數加載了界面文件,但是沒有放到應用程序的 windows 上.
重點理解, UIApplicationMain 的做的三件事:
1.根據第三個參數創建 UIApplication 對象.
2.根據第四個參數創建應用程序的 delegate, 並設置 delegate.
3.設置主事件循環( main event loop) 包括 application 的 run loop, 同時開始處理事件.