1,RunLoop作用,保证程序一直在运行中,处理 APP 中各种事件(比如触摸事件,定时器事件),节省 CPU 资源,提高程序性能:该做事做事,该休息休息
2,RunLoop与线程
每条线程都有唯一的一个与之对应的 RunLoop 对象
RunLoop保存在一个全局的 Dictionary,线程作为 key,RunLoop 作为 value
线程刚创建时并没有 RunLoop 对象,RunLoop 会在第一次获取它时创建
RunLoop 会在线程结束时销毁
主线程的 RunLoop 已经自动获取(创建),子线程默认没有开启 RunLoop
3,RunLoop对象底层的样子

4,CFRunLoopModeRef
5,事件是通过Source1来捕捉,再通过 Source0来处理
6,RunLoop运行逻辑
7,RunLoop 在实际开发中应用
控制线程生命周期(线程保活)
解决 NSTimer 在滑动时停止工作的问题
监控应用卡顿
性能优化
8,线程与线程之间交互通过端口 port,source1
9,NSRunLoopCommonModes 并不是一个真的模式,只是一个标记
10,NSRunLoop的 run 方法是无法停止的,他专门用于开启一个永不销毁的线程