NSRunLoop

RunLoop运行逻辑

RunLoop面试题:

1、什么是RunLoop?

答:从字面意思上:运行循环、跑圈。

其实内部实现就是一个do-While循环,在这个循环内部不断的执行各种任务(Observer、Timer、Observer)

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

2、你在开发中怎么使用RunLoop?

答:可以控制定时器在特定模式下运行。

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

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

最常见的使用场景就是,开启一个常驻线程(让一个子线程不进入消亡,等待其他线程发来消息,处理其他事件。)

3、自动释放池什么时候释放?

答:在RunLoop睡眠之前释放(kCFRunLoopBeforeWaiting)

你可能感兴趣的:(NSRunLoop)