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