zoukankan      html  css  js  c++  java
  • iOS开发之iOS程序的启动过程

    程序启动的完整过程:

    1main函数

    2UIApplicationMain

    * 创建UIApplication对象

    * 创建UIApplication的delegate对象

    3delegate对象开始处理(监听)系统事件(没有storyboard)

    * 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法

    * 在application:didFinishLaunchingWithOptions:中创建UIWindow

    * 创建和设置UIWindow的rootViewController

    * 显示窗口

    3)根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(storyboard)

    * 创建UIWindow

    * 创建和设置UIWindow的rootViewController

    * 显示窗口

    4UIApplicationMain

    main函数中执行了一个UIApplicationMain这个函数:

    int UIApplicationMain(int argc, char *argv[], NSString

    *principalClassName, NSString *delegateClassName);

    各参数含义:

    argcargv:直接传递给UIApplicationMain进行相关处理即可。

    principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值。

    delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议。

    UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性。

    接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)。

    程序正常退出时UIApplicationMain函数才返回。

  • 相关阅读:
    下载文档时Safari浏览器下载后出现".html"问题
    实体框架(Entity Frmaework)简介
    系统内置委托:Func/Action
    lambda表达式不使用委托(delegate) 用FUNC
    lambda表达式
    C#生成缩略图 (通用模式)
    从底层角度看ASP.NET-A low-level Look at the ASP.NET...
    网站前端优化
    HTTP协议
    什么是AJAX? AJAX:”Asynchronous JavaScript and XML”中文意思:异步JavaScript和XML。
  • 原文地址:https://www.cnblogs.com/lifengfneg/p/4773866.html
Copyright © 2011-2022 走看看