美文网首页
RunLoop知识点总结

RunLoop知识点总结

作者: nickNameDC | 来源:发表于2023-02-28 15:14 被阅读0次

iOS笔记/复习笔记


RunLoop基本作用

  • 保持程序持续运行;
  • 处理App各种事件;
  • 节省CPU资源,提高程序性能;

RunLoop和线程的关系

  • 每条线程都有唯一的一个与之对应的RunLoop对象;
  • RunLoop保存在一个全局的Dictionary里,线程作为key,RunLoop作为value;
  • 主线程的RunLoop已经自动创建好了,子线程的RunLoop需要主动创建;
  • RunLoop在第一次获取时创建,在线程结束时销毁;

RunLoop的mode(运行模式)

一个 RunLoop 包含若干个 Mode,每个Mode又包含若干个Source、Timer、Observer
每次RunLoop启动时,只能指定其中一个 Mode,这个Mode被称作 CurrentMode
如果需要切换Mode,只能退出RunLoop,再重新指定一个Mode进入,这样做主要是为了分隔开不同组的Source、Timer、Observer,让其互不影响。如果Mode里没有任何Source0/Source1/Timer/Observer,RunLoop会立马退出

系统默认注册的5个Mode:

  • kCFRunLoopDefaultMode:App的默认Mode,通常主线程是在这个Mode下运行
  • UITrackingRunLoopMode:界面跟踪 Mode,用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他 Mode 影响
  • UIInitializationRunLoopMode: 在刚启动 App 时第进入的第一个 Mode,启动完成后就不再使用,会切换到kCFRunLoopDefaultMode
  • GSEventReceiveRunLoopMode: 接受系统事件的内部 Mode,通常用不到
  • kCFRunLoopCommonModes: 这是一个占位用的Mode,作为标记kCFRunLoopDefaultMode和UITrackingRunLoopMode用,并不是一种真正的Mode

Source1/Source0/Timers/Observer分别代表什么

  • Source1 : 基于Port的线程间通信
  • Source0 : 触摸事件,PerformSelectors
  • Timers : 定时器,NSTimer
  • Observer : 监听器,用于监听RunLoop的状态

RunLoop的的运行状态

  • kCFRunLoopEntry: 进入RunLoop
  • kCFRunLoopBeforeTimers: 即将处理timers
  • kCFRunLoopBeforeSources: 即将处理Sources
  • kCFRunLoopBeforeWaiting: 即将休息
  • kCFRunLoopAfterWaiting:即将被唤醒
  • kCFRunLoopExit: 退出RunLoop

RunLoop处理逻辑流程图

1434508-d448ec1fc5171e09.png

相关文章

  • runloop相关小结

    本文总结与runloop相关的知识点。从以下几个方面去分析runloop: runloop是什么?有什么作用 ru...

  • iOS Runloop

    这里记录下iOS中Runloop相关的知识点,以备以后复习总结。 先来说下Runloop相关的概念: Runloo...

  • iOS知识体系总结-RunLoop

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-RunLoop iOS知识点/RunLoo...

  • RunLoop 相关

    谨以此篇总结归纳记录iOS中一大知识点 RunLoop 的相关知识,以作备忘。 iOS中,提供了两种runloop...

  • Runloop总结和应用(附Demo)

    关于Runloop的原理或者源码分析,网上有很多文章。本文意在总结一下自己能想到的一些Runloop的知识点,并举...

  • RunLoop - 知识点总结

    RunLoop 初窥: 从字面意思看:运行循环, 跑圈 其实它内部就是一个 do-while 循环, 在这个循环内...

  • RunLoop知识点总结

    RunLoop是多线程的难点. 在实际开发中我们如何使用RunLoop呢? 且容我一一道来, 不当之处, 敬请斧...

  • Runloop 知识点总结

    https://segmentfault.com/a/1190000004938638 Runloop 组成 每个...

  • OC--RunLoop应用例子

    知识点:1、RunLoop的基础知识2、RunLoop 与 NSTimer3、RunLoop 与 Perform ...

  • iOS runloop 知识点总结

    一:runloop相关知识 1.runloop是什么 runloop是通过内部维护的时间循环,来对事件/消息进行管...

网友评论

      本文标题:RunLoop知识点总结

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