iOS基础·OC高级篇iOS软件重构与设计模式简友广场

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

2023-01-11  本文已影响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防护

上一篇 下一篇

猜你喜欢

热点阅读