美文网首页
2018-11-03iOS App程序启动原理

2018-11-03iOS App程序启动原理

作者: 窗内户外 | 来源:发表于2018-11-05 00:08 被阅读0次
    image.png

    一、app启动是从main函数开始,创建自动释放池,然后调 UIAPPlicationMain()函数。UIApplicationMain函数创建 UIApplication对象和 delegate(程序代 ),并设置为UIApplication的代 ,也设置事件循环,包含程序的runloop,并开始处理事件。如果info.plist中 main storyboard file base name的值是一个有效的,将会加载这个文件。然后程序执行到application didfinishlaunching 方法中,初始化窗口,设置根视图,显示窗口,并设置为程序的窗 。
    二、UIApplicationMain函数返回类型可以随便写,因为这个函数永远都不会执行到return. UIApplicationMain函数有4个参数,分别是 argc,argv,principalClassName,delegateClassName。 argc和argv传递main函数的两个参数。第三个参数:principalClassName,它代 表着我们的程序本身,如果为nil,系统默认为UIApplication。如果想传 定义 的类名,类名必须是UIApplication的 类。第四个参数是appdelegate类,遵循 UIApplicationDelegate协议,负责控制程序的运 。
    三、app的启动时间分为两部分,分别是T1和T2,t1是指系统环境布局时间,包 含创建进程,加载创建可执 件,有库加载,堆栈环境配置等等。t2是从main 函数到第 个界 显示的时间。t1时间 的原因有4个:加载库 件多,ObjC类 多,静态对象和全局对象多,ObjC的load类 法耗时。t2时间的优化,把耗时操 作放在 线程中执 。
    四、runloop的作用处理程序事件,核心是do wile循环,

     do {
          1.处 事情
          2.if(判断是否有其他消息处 ,如果有){
          goto:handle_msg(处 消息) }
          3.等待消息(即休眠)
          4.有消息,就醒来
          5.继续处理消息
    }while(1)
    

    五、UIWindow是app的第一个视图控件,通常app只有一个,是特殊的UIView,UIWindow的层级分为UIWindowLevelNormal(3), UIWindowLevelAlert(1),UIWindowLevelStatusBar(2),可以通过改变窗 的等级,改变视图显示的上下层位置。UIWindow 的hidden默认是YES,也就 是隐藏的,显示window把属性hidden设置为NO, 移除可以把window置为nil。

    相关文章

      网友评论

          本文标题:2018-11-03iOS App程序启动原理

          本文链接:https://www.haomeiwen.com/subject/rqhjxqtx.html