iOS程序启动原理

iOS程序启动原理

参考文章:
iOS アプリの構造がどのようになっているか紐解いてみる
Revisiting the App Launch Sequence on iOS

启动过程

1.执行 main 函数,调用 main 函数里的 UIApplicationMain 函数。

2.UIApplicationMain 函数:
2.1 创建 UIApplication 对象;
2.2 创建UIApplication对象的代理AppDelegate;(遵循UIApplicationDelegate协议)
2.3 加载 Info.plist 文件;

3.UIApplication 对象开启事件循环。

4.UIApplication 读取 Stroyboard(已经加载的Info.plist文件里的Main storyboard file base name项对应的Stroyboard)。
如果没有Stroyboard,则直接跳至7。然后在对应方法中写下面的过程。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    // 成为主窗口并可见
    [self.window makeKeyAndVisible];
    
    // 设置根视图控制器
    
    return YES;
}

5.生成 ViewController(上一步Stroyboard里,白色箭头所指的控制器对象)。

6.AppDelegate 生成 UIWindow(并且设置根视图控制器为上一步的ViewController)。

7.调用 application:didFinishLaunchingWithOptions: 方法.

流程图

アプリ起動の流れ

App Launch Sequence as of Xcode 4.2 (without Storyboarding)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.暗闇より夜魔来たる-1あなたはきっとこんな私をお許しにはならないでしょう…ですが、私はあなたを守る以外の何かを...
    波沙诺瓦阅读 3,296评论 0 7
  • 陽の光 闇の月 陽も月も異なれど、同じように地上を照らす。けれど、両者は決してまみえることはない。陽が輝くとき月は...
    波沙诺瓦阅读 2,285评论 0 7
  • 1.暗闇より夜魔来たる-1あなたはきっとこんな私をお許しにはならないでしょう…ですが、私はあなたを守る以外の何かを...
    波沙诺瓦阅读 1,961评论 1 2
  • 还有几天就要高二段考了,心里莫名沉闷,感觉有什么在压制着我。可是以往考试都是平平淡淡的,而这次为什么这么奇...
    银河再无帝国阅读 304评论 0 0
  • 参加两期好报写作班,连续60天写作。每日一篇文,写作已成为一种状态、一种习惯、一种享受。 写作活跃用脑、时时思考。...
    龙宝青青阅读 323评论 6 7