iOS runloop面试必备

1.什么是RunLoop?

从字面意思看:运行循环、跑圈

其实它内部就是do-while循环,在这个循环内部不断地处理各种任务(比如Source、Timer、Observer)

一个线程对应一个RunLoop,主线程的RunLoop默认已经启动,子线程的RunLoop得手动启动(调用run方法)

RunLoop只能选择一个Mode启动,如果当前Mode中没有任何Source(Sources0、Sources1)、Timer,那么就直接退出RunLoop

2.自动释放池什么时候释放?

通过Observer监听RunLoop的状态

第一次创建:第一次开启runloop的时候

最后一次销毁:runloop退出的时候

其他时候创建销毁:当runloop即将休眠事销毁,重新创建一个新的。

3.在开发中如何使用RunLoop?什么应用场景?

开启一个常驻线程(让一个子线程不进入消亡状态,等待其他线程发来消息,处理其他事件)

在子线程中开启一个定时器

在子线程中进行一些长期监控

可以控制定时器在特定模式下执行

可以让某些事件(行为、任务)在特定模式下执行

可以添加Observer监听RunLoop的状态,比如监听点击事件的处理(在所有点击事件之前做一些事情)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容