-
什么是RunLoop
- 从字面意思上来看:就是运行循环,跑圈
- 究其内部也就是一个do-while循环,在这个循环内部不断地处理各种任务(比如Source,Timer,Observer)
- 一个线程对应着一个RunLoop,主线程的RunLoop默认是开启的,这就是为什么APP程序可以一直运行的原因,但是子线程的RunLoop必须手动开启
- RunLoop在运行的时候是分状态运行的,如果当前Mode下没有任何的Source,Timer,那么RunLoop就会直接退出
-
RunLoop的使用场景
- 开启一个常驻线程(让一个子线程不进入消亡状态,等待其他线程发来消息,处理事件)
例如:- 在子线程开启一个定时器
- 在子线程进行一些长期监控
- 在子线程进行网络下载任务
- 可以控制定时器在特定的模式执行
- 可以让某些事件,行为,任务在特定的模式下执行
- 可以添加Observer监听RunLoop的状态,比如监听点击事件处理(即拦截RunLoop的一些行动,在其之前做一些事情)
网友评论