iOS程序啟動原理
參考文章:
iOS アプリの構(gòu)造がどのようになっているか紐解いてみる
Revisiting the App Launch Sequence on iOS
啟動過程
1.執(zhí)行 main 函數(shù),調(diào)用 main 函數(shù)里的 UIApplicationMain 函數(shù)叉跛。
2.UIApplicationMain 函數(shù):
2.1 創(chuàng)建 UIApplication 對象;
2.2 創(chuàng)建UIApplication對象的代理AppDelegate;(遵循UIApplicationDelegate協(xié)議)
2.3 加載 Info.plist 文件期虾;
3.UIApplication 對象開啟事件循環(huán)。
4.UIApplication 讀取 Stroyboard(已經(jīng)加載的Info.plist文件里的Main storyboard file base name項對應(yīng)的Stroyboard)吊说。
如果沒有Stroyboard局服,則直接跳至7。然后在對應(yīng)方法中寫下面的過程浊竟。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 創(chuàng)建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
// 成為主窗口并可見
[self.window makeKeyAndVisible];
// 設(shè)置根視圖控制器
return YES;
}
5.生成 ViewController(上一步Stroyboard里怨喘,白色箭頭所指的控制器對象)津畸。
6.AppDelegate 生成 UIWindow(并且設(shè)置根視圖控制器為上一步的ViewController)。
7.調(diào)用 application:didFinishLaunchingWithOptions: 方法.
流程圖
アプリ起動の流れ
App Launch Sequence as of Xcode 4.2 (without Storyboarding)