iOS总结篇-RunLoop

作者: 测试账号 | 来源:发表于2021-06-15 23:42 被阅读0次

    RunLoop是什么?

    RunLoop是一个事件循环,让线程休眠和线程保活成为了可能,线程休眠可以节省CPU资源;

    RunLoop处理消息的流程是“接收消息->恢复活跃->处理消息->进入休眠”。

    一个RunLoop包含了多个Mode,每个Mode又包含了若干个Source/Timer/Observer。每次调用 RunLoop的主函数时,只能指定其中一个Mode,这个Mode被称作CurrentMode。如果需要切换 Mode,只能退出Loop,再重新指定一个Mode进入。这样做主要是为了分隔开不同Mode中的Source/Timer/Observer,让其互不影响。

    RunLoop怎么用?

    1.NSTimer中底层用到了RunLoop。

    2.Autorelerasepool也是用了RunLoop的原理进行内存的回收

    3.创建NSTimer的时候,也是用到了RunLoop,performSelecter:afterDelay使用时。

    4.事件的交互,触摸屏幕或者硬件的交互,也用到了RunLoop。

    5.UI界面刷新。

    6.调用了dispatch_async(dispatch_get_main_queue(), block)时,主队列会把该 block 放到对应的线程(恰好是主线程)中,主线程的 RunLoop 会被唤醒。

    7.AFNetWorking 3.0以前的线程保活。

    8.可以用来监控系统卡顿。

    相关文章

      网友评论

        本文标题:iOS总结篇-RunLoop

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