iOS知识复习笔记(4)---RunLoop相关

作者: 焦下客 | 来源:发表于2023-01-11 01:12 被阅读0次

一、底层原理和调用过程

Runloop 和线程一一对应,主线程程序启动默认开启runloop ,其他线程默认没有runloop,需要手动开启,一个runloop里面包含多个mode,一个mode里面有包含多个source/timer/Observer, 并且只能指定一种mode下运行,要进行mode切换需要退出当前mode,重新进入。
1.通知Observer 进入runloop,并创建线程池objc_autoreleasepoolpush();
2.通知Observer 即将触发Timer回调。
3.通知Observer 即将触发source0回调
4.触发source0回调
5.如果有source1,跳转至9
6.通知Observer 即将触发休眠 ,objc_autoreleasepoolpop()释放旧的,objc_autoreleasepoolpush()创建新的。
7.休眠。等待唤醒
8.通知Observer ,线程刚被唤醒
9.处理唤醒时收到的消息,然后跳转回2
10.通知Observer,即将退出loop

具体如下图: RunLoop_1.png

二、实际应用

1.线程保活
2.延迟加载图片
3.卡顿检测
4.crash防护

相关文章

网友评论

    本文标题:iOS知识复习笔记(4)---RunLoop相关

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