Runloop

作者: 里克尔梅西 | 来源:发表于2018-04-11 16:30 被阅读8次

知道的点:
1、RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行上面 Event Loop 的逻辑。线程执行了这个函数后,就会一直处于这个函数内部 “接受消息->等待->处理” 的循环中(do...while),直到这个循环结束(比如传入 quit 的消息),函数返回。

2、作用:

  • 保持程序的持续运行
  • 处理App中的各种事件(触摸、定时器、Selector事件)
  • 节省CPU资源,提高程序性能(该做事做事,没事做休息)

3、原理

  • 一个RunLoop包含若干个Mode,每个Mode又包含若干个Source、Observer、Timer
  • 每次RunLoop启动,只能指定一个Mode,这个Mode被称为CurrentMode
  • 如果需要切换Mode,只能退出Loop,再重新指定一个Mode进入, 以使不同组之间的Source、Observer、Timer互不受影响

4、RunLoop和线程有什么关系

  • RunLoop与线程是一一对应的
  • 程序启动时,主线程默认会自己创建RunLoop,并设置为Default模式
  • 创建子线程时,必须获取当前线程的RunLoop并启动它

参考文章:
https://blog.ibireme.com/2015/05/18/runloop/
https://blog.csdn.net/qq_30513483/article/details/53373905

相关文章

网友评论

      本文标题:Runloop

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