Note 10 应用程序启动流程

Storyboard 启动流程

sb启动过程

  1. Info.plist(获取main interface,storyboard等信息)
  2. appdelegate.swift -> didFinishLaunchingWithOptions(加载并显示启动画面)->启动完成
  3. 加载main interface的storyboard
  4. 调用viewDidLoad()加载完成界面
  • info.plist中指定了启动的storyboard
  • 同一个storyboard中可以有很多个界面
  • storyboard中通过Enty Point 指定第一个界面(initial ViewController)
Note 10 应用程序启动流程_第1张图片
指定第一个界面

pic2

代码启动过程

  1. Info.plist(获取信息)
  2. AppDelegate.swift -> DidFinishLaunchingWithOptions(加载并显示启动画面)
  3. 代码加载窗口和页面

因为没有main的storyboard,因此要在application加载并显示启动画面的函数中创建keywindow和rootViewController

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    print("启动完成")
    //加载窗口和页面
    //获取屏幕高度宽度
    let rect = UIScreen.mainScreen().bounds
    self.window = UIWindow(frame:rect)
    
    //设置要显示的一个界面(选择viewcontroller入口)
    let viewCont = ViewController()
    //设置rootViewController,也就是显示的第一个界面
    self.window?.rootViewController = viewCont
    
    //显示窗口(使window可视化)
    self.window?.makeKeyAndVisible()

    
    // Override point for customization after application launch.
    return true
}

纯代码写需要注意的地方:

  • 必须将Info.plist中的Main storyboard file base nameMain删除/或者程序信息中的Main interface将Main删除
  • 程序至少需要一个keywindow
  • 程序至少需要一个rootViewController

创建keywindow

self.window = UIWindow(frame: rect)

创建并指定rootViewController

self.window?.rootViewController = ViewController()

显示窗口

self.window?makeKeyAndVisible()

程序生命周期

Note 10 应用程序启动流程_第2张图片
程序生命周期图
整个应用由事件驱动

你可能感兴趣的:(Note 10 应用程序启动流程)