RunLoop

496 阅读1分钟

1,RunLoop作用,保证程序一直在运行中,处理 APP 中各种事件(比如触摸事件,定时器事件),节省 CPU 资源,提高程序性能:该做事做事,该休息休息

2,RunLoop与线程

每条线程都有唯一的一个与之对应的 RunLoop 对象 RunLoop保存在一个全局的 Dictionary,线程作为 keyRunLoop 作为 value 线程刚创建时并没有 RunLoop 对象,RunLoop 会在第一次获取它时创建 RunLoop 会在线程结束时销毁 主线程的 RunLoop 已经自动获取(创建),子线程默认没有开启 RunLoop

3,RunLoop对象底层的样子

![装了很多 Mode,只有一个 CurrentMode](p1-juejin.byteimg.com/tos-cn-i-k3… ge)

4,CFRunLoopModeRef

5,事件是通过Source1来捕捉,再通过 Source0来处理

6,RunLoop运行逻辑

7,RunLoop 在实际开发中应用

控制线程生命周期(线程保活) 解决 NSTimer 在滑动时停止工作的问题 监控应用卡顿 性能优化

8,线程与线程之间交互通过端口 portsource1

9,NSRunLoopCommonModes 并不是一个真的模式,只是一个标记

10,NSRunLooprun 方法是无法停止的,他专门用于开启一个永不销毁的线程