什么是RunLoop

RunLoop

RunLoop称为事件循环,可以理解为系统中对各种事件源不间断的循环的处理。应用在运行过程中会产生大量的系统和用户事件,包括定时器事件,用户交互事件(鼠标键盘触控板操作),模态窗口事件,各种系统Source事件,应用自定义的Source事件等等,每种事件都会存储到不同的FIFO先进先去的队列,等待事件循环依次处理。被RunLoop管理的线程在挂起时,不会占用系统的CPU资源,可以说RunLoop是非常高效的线程管理技术。

RunLoop对象

iOS中有2套API来访问和使用RunLoop

  • Foundation【NSRunloop】
  • Coro Foundation框架【CFRunloopRef】
    NSRunLoop和CFRunLoopRef都代表着RunLoop对象,它们是等价的,可以互相转换
    NSRunLoop是基于CFRunLoopRef的一层OC包装,所以要了解RunLoop内部结构,需要多研究CFRunLoopRef层面的API(Core Foundation层面)

推荐阅读更多精彩内容