美文网首页iOS深入原理
iOS关于RunLoop 的总结

iOS关于RunLoop 的总结

作者: iOS心安 | 来源:发表于2020-12-09 14:01 被阅读0次

Runloop

Runloop是事件接收和分发机制的一个实现。是线程相关的基础框架的一部分。一个Runloop就是一个事件处理的循环,用来不停的调度工作及处理输入事件。使用runloop的目的就是让你的线程

RunLoop的主要目的:

保证程序执行的线程不会被系统终止,如果没有RunLoop,UIApplicationMain函数执行完毕之后将直接返回,就是说程序一启动然后就结束,在有工作的时候忙于工作,而没有工作的时候处于休眠状态.

什么时候使用Runloop ?

当需要和该线程进行交互的时候才会使用Runloop.

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:711315161,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

Runloop Mode

一个Runloop可能有几个mode

Runloop Mode 实际上是 SourceTimerObserver 的集合,不同的 Mode 把不同组的Source,Timer和Observer隔绝开来。Runloop 在某个时刻只能跑在一个 Mode 下,处理这一个 Mode 当中的 Source,Timer 和 Observer

苹果文档中提到的 Mode 有五个,分别是:

NSDefaultRunLoopMode:默认的mode,正常情况下都是在这个mode
NSConnectionReplyMode
NSModalPanelRunLoopMode
NSEventTrackingRunLoopMode:使用这个Mode去跟踪来自用户交互的事件(比如UITableView上下滑动)
NSRunLoopCommonModes

iOS 中公开暴露出来的只有 NSDefaultRunLoopModeNSRunLoopCommonModesNSRunLoopCommonModes 实际上是一个 Mode 的集合,默认包括 NSDefaultRunLoopModeNSEventTrackingRunLoopMode

Source

即可以唤醒Runloop的一些事件。比如用户点击了屏幕,就会创建一个input source。

  • source0 : 非系统事件
  • source1 : 系统时间

Timer
我们经常用的NSTimer就属于这一类。

Observer
某个observer可以监听runloop的状态变化,并作出一定反应。

RunLoop运行流程

没有事情的时候,Runloop处于休眠状态。当外部source将其唤醒后,它会依次处理接收到的timer/source,然后再次进入休眠。

阅读原文

相关文章

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

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

  • RunLoop

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

  • NSRunLoop

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

  • iOS关于RunLoop 的总结

    Runloop Runloop是事件接收和分发机制的一个实现。是线程相关的基础框架的一部分。一个Runloop就是...

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

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

  • 探寻RunLoop的本质

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

  • GeekBand - iOS 多线程和RunLoop 总结

    iOS 开发高级进阶 第三周 多线程 Runloop iOS 多线程以及 RunLoop 学习总结 基础知识 什么...

  • iOS底层原理——浅谈RunLoop

    RunLoop应用:线程保活 线程保活、控制销毁 iOS-浅谈RunLoop8iOS底层原理总结 - RunLoo...

  • RunLoop

    详细文章 xx_cc - iOS底层原理总结 - RunLoop 意一ineyee - RunLoop RunLo...

  • RunLoop相关

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

网友评论

    本文标题:iOS关于RunLoop 的总结

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