標籤:
iOS程式的執行順序
首先從main.m檔案的main函數開始執行的。
int main(int argc, char * argv[]){ @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}//1、principalClassName:應用程式物件的類名(UIApplication或其子類)//2、delegateClassName:應用程式delegate的類名。(任何接受了UIApplicationDelegate的類)
UIApplicationMain根據上述兩個類名建立應用程式執行個體、應用程式代理程式執行個體。然後建立事件迴圈(runloop),檢測程式的各種事件(程式開始啟動,接收到觸摸等等)
在執行UIApplicationMain函數時做了跳轉,轉到了AppDelete中。應用程式代理程式,主要檢測應用程式的狀態並做出相應的處理。應用程式的狀態有很多,比如:程式啟動、進入活躍狀態、進到後台、記憶體警告、收到遠程訊息等等。任何接受了UIApplicationDelegate協議的對象都可以成為應用程式代理程式。一旦應用程式的某種狀態觸發,就會執行相應的代理方法。UIApplicationDelegate是一個OC的協議。裡面聲明了一堆方法,這些方法都與應用程式運行狀態有關,它們由應用程式代理程式實現。UIApplication對象負責調用。
application:didFinishLaunchingWithOptions:告訴delegate程式啟動即將完成,程式準備要運行。(delegate實現這個方法時,要建立window對象,將程式內容通過window呈現給使用者。),在該方法中為我們應用程式建立window等必要的介面
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];//初始化window self.window.backgroundColor = [UIColor grayColor];//設定window的背景色 [self.window makeKeyAndVisible];//把window設定為主視圖 [self.window setRootViewController:[[UIViewController alloc] init]];//設定window的根視圖控制器 return YES;}
applicationWillResignActive:程式即將結束活躍狀態,(例如:突然來電話,簡訊,下來功能表列等)就會執行該方法,一般在該方法中做一些必要資訊的儲存,和一些暫停動作。例如,遊戲進行中時,要暫停遊戲
- (void)applicationWillResignActive:(UIApplication *)application { NSLog(@"*****%s",__func__);//__func__列印方法名}
applicationDidEnterBackground:程式已經進入後台,如果程式長期在後台獃著,有可能會退出,所以在該方法中要進行一些重要資料的持久化。(按Home鍵)
- (void)applicationDidEnterBackground:(UIApplication *)application { NSLog(@"*****%s",__func__);}
applicationWillEnterForeground:程式即將進入前台,一般式在程式由後台進入該程式的時候執行該方法
- (void)applicationWillEnterForeground:(UIApplication *)application { NSLog(@"*****%s",__func__);}
applicationDidBecomeActive:告訴delegate應用程式已經進入活躍狀態(重新執行被暫停任務),程式啟動或者由後台進入前台都會執行該方法
- (void)applicationDidBecomeActive:(UIApplication *)application { NSLog(@"*****%s",__func__);}
applicationWillTerminate:即將退出時執行該方法
- (void)applicationWillTerminate:(UIApplication *)application{ NSLog(@"*****%s",__func__);}
ios程式檔案執行順序
plist檔案中 1.bundle Display Name 在熒屏中app的檔案名稱(改完之後刪除,重新運行) 2.bundle Identifier 上線時候用 ,唯一標識 3.bundle Version 版本號碼 4. Supported interface orientations (Portrait(bottom home button)) 5.Icon files添加不同尺寸的圖片57*57/114*114自動加圓角 6.Icon already includes gloss effects 設定yes ,去除高光 7.Application doesn`t run in background 可以設定為yes
.pch檔案 ,先行編譯檔案
Infoplist。strings檔案,關於多語言
架構裡面都是標頭檔
iOS程式的執行順序和iOS程式檔案執行順序