美文网首页程序员
iOS RunLoop(3)RunLoop原理

iOS RunLoop(3)RunLoop原理

作者: 奔跑吧小蚂蚁 | 来源:发表于2018-07-02 14:40 被阅读95次

    iOS RunLoop(1)RunLoop简介
    iOS RunLoop(2)RunLoop相关类
    iOS RunLoop(3)RunLoop原理
    iOS RunLoop(4)RunLoop实战应用

    根据苹果在文档里的说明,RunLoop 内部的逻辑大致如下:

    runtime运行逻辑图.png

    这张图对于我们理解RunLoop来说太有帮助了,下边我们可以来说下官方文档给我们的RunLoop逻辑。

    在每次运行开启RunLoop的时候,所在线程的RunLoop会自动处理之前未处理的事件,并且通知相关的观察者。

    具体的顺序如下:

    1 通知观察者RunLoop已经启动
    2 通知观察者即将要开始的定时器
    3 通知观察者任何即将启动的非基于端口的源
    4 启动任何准备好的非基于端口的源
    5 如果基于端口的源准备好并处于等待状态,立即启动;并进入步骤9
    6 通知观察者线程进入休眠状态
    7 将线程置于休眠知道任一下面的事件发生:

    7.1 某一事件到达基于端口的源
    7.2 定时器启动
    7.3 RunLoop设置的时间已经超时
    7.4 RunLoop被显示唤醒
    

    8 通知观察者线程将被唤醒
    9 处理未处理的事件

    9.1 如果用户定义的定时器启动,处理定时器事件并重启 RunLoop。进入步骤2
    9.2 如果输入源启动,传递相应的消息
    9.3 如果RunLoop被显示唤醒而且时间还没超时,重启RunLoop。进入步骤2
    

    10 通知观察者RunLoop结束

    文章来源:
    https://www.jianshu.com/p/d260d18dd551
    https://blog.ibireme.com/2015/05/18/runloop/

    相关文章

      网友评论

        本文标题:iOS RunLoop(3)RunLoop原理

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