故事简友广场内卷

iOS总结篇-RunLoop

2021-06-15  本文已影响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.可以用来监控系统卡顿。

上一篇下一篇

猜你喜欢

热点阅读