美文网首页
runloop总结

runloop总结

作者: Daniel131 | 来源:发表于2018-07-04 16:58 被阅读0次

runloop工作主要原理和总结:

- 初始化UIApplication单例对象

  - 初始化AppDelegate对象,并设为UIApplication对象的代理

  - 检查Info.plist设置的xib文件是否有效,如果有则解冻Nib文件并设置outlets,创建显示key window、rootViewController、与rootViewController关联的根view(没有关联则看rootViewController同名的xib),否则launch之后由程序员手动加载。

  - 建立一个主事件循环,其中包含UIApplication的Runloop来开始处理事件。

- 初始化UIApplication单例对象

  - 初始化AppDelegate对象,并设为UIApplication对象的代理

  - 检查Info.plist设置的xib文件是否有效,如果有则解冻Nib文件并设置outlets,创建显示key window、rootViewController、与rootViewController关联的根view(没有关联则看rootViewController同名的xib),否则launch之后由程序员手动加载。

  - 建立一个主事件循环,其中包含UIApplication的Runloop来开始处理事件。

UIApplication:

1、通过window管理视图;

2、发送Runloop封装好的control消息给target;

3、处理URL,应用图标警告,联网状态,状态栏,远程事件等。

AppDelegate:

管理UIApplication生命周期和应用的五种状态(notRunning/inactive/active/background/suspend)。

Key Window:

1、显示view;

2、管理rootViewcontroller生命周期;

3、发送UIApplication传来的事件消息给view。

rootViewController:

1、管理view(view生命周期;view的数据源/代理;view与superView之间事件响应nextResponder的“备胎”);

2、界面跳转与传值;

3、状态栏,屏幕旋转。

view:

1、通过作为CALayer的代理,管理layer的渲染(顺序大概是先更新约束,再layout再display)和动画(默认layer的属性可动画,view默认禁止,在UIView的block分类方法里才打开动画)。layer是RGBA纹理,通过和mask位图(含alpha属性)关联将合成后的layer纹理填充在像素点内,GPU每1/60秒将计算出的纹理display在像素点中。

2、布局子控件(屏幕旋转或者子视图布局变动时,view会重新布局)。

3、事件响应:event和guesture。

插播控制器生命周期

runloop:

1、(要让马儿跑)通过do-while死循环让程序持续运行:接收用户输入,调度处理事件时间。

2、(要让马儿少吃草)通过mach_msg()让runloop没事时进入trap状态,节省CPU资源。

1、与线程和自动释放池相关:

2、CFRunLoopRef构造:数据结构;创建与退出;mode切换和item依赖;Runloop启动

        - CFRunLoopModeRef:数据结构(与CFRunLoopRef放一起了);创建;类型;

          modeItems:- CFRunLoopSourceRef:数据结构(source0/source1);

                            - source0 :

                            - source1 :

                      - CFRunLoopTimerRef:数据结构;创建与生效;相关类型(GCD的timer与CADisplayLink)

                      - CFRunLoopObserverRef:数据结构;创建与添加;监听的状态;

3、Runloop内部逻辑:关键在两个判断点(是否睡觉,是否退出)

        - 代码实现:

        - 函数作用栈显示:

4、Runloop本质:mach port和mach_msg()。

5、如何处理事件:

        - 界面刷新:

        - 手势识别:

        - GCD任务:

        - timer:(与CADisplayLink)

        - 网络请求:

6、应用:

        - 滑动与图片刷新;

        - 常驻子线程,保持子线程一直处理事件

相关文章

  • RunLoop

    RunLoop 文章已经很多了,结合各大文章做个总结 什么是 RunLoop RunLoop 人如其名,run 跑...

  • iOS RunLoop 总结以及相关面试题解答

    iOS RunLoop 总结以及相关面试题解答 iOS RunLoop 总结以及相关面试题解答

  • NSRunLoop

    【iOS程序启动与运转】- RunLoop个人小结 RunLoop总结:RunLoop的应用场景(三) 走进Run...

  • iOS开发经验(18)-Runloop

    目录 Runloop RunLoop 与线程 个人理解总结 应用场景 1. 什么是RunLoop 基本作用 保持程...

  • 探寻RunLoop的本质

    iOS底层原理总结 - RunLoop 面试题 讲讲 RunLoop,项目中有用到吗? RunLoop内部实现逻辑...

  • iOS面试点文章链接

    runtime基础方法、用法、消息转发、super: runtime 完整总结 runloop源码、runloop...

  • RunLoop数据结构、RunLoop的实现机制、RunLoop

    推荐阅读:备战2020——iOS全新面试题总结 RunLoop概念 RunLoop的数据结构 RunLoop的Mo...

  • RunLoop

    iOS刨根问底-深入理解RunLoop runloop 和线程有什么关系 iOS 多线程:RunLoop详细总结

  • RunLoop 的相关概念

    此篇为对 RunLoop 的相关概念的总结,主要介绍 RunLoop 的一些概念 RunLoop 简介 RunLo...

  • RunLoop相关

    iOS底层原理总结 - RunLoop解密 Runloop Runloop是一种在当前线程,持续调度各种任务的运行...

网友评论

      本文标题:runloop总结

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