1.到底什么才是RunLoop,简述
RunLoop实际上就是个do-while运行循环,其本质保证程序运行不退出从而监听APP滑动、点击、timer等事件。循环内部没有事情的时候是休眠状态(sleep_and_wait())等待消息的到来,监听到消息之后去执行消息(process_message(msg))。
2.线程和RunLoop的关系
线程和Runloop是一对一的关系,每个线程内部肯定都有一个runloop,每一个runloop中可能维护着多个mode,CPU会在多个线程间切换来执行任务,呈现出多个线程同时执行的效果。
执行的任务其实就是RunLoop去各个Mode里执行各个item;
主线程默认开启NSDefaultRunLoopMode,子线程需要手动开启runloop才行。
3.RunLoop的应用
crash 监听
线程保活
Timer添加mode
4.RunLoop内部实现方式 及工作流程