面试题:RunLoop 运行时机制
2021-08-28 本文已影响0人
常在士心
一、运行循环
程序在启动的时候,就默认在主线程启动一个runLoop;其它线程的runloop需要手动启用;
runloop只能有一个runloopMode模式,如果当前mode模式下没有source、timer、observer事件那么就退出runloop模式;
二、runloop和线程之间的关系
1、一条线程对应一个runloop对象,每一个线程都对应唯一的一个runloop对象;
2、runloop并不能保证线程安全,只能在当前线程中操作当前的runloop对象,而不能在当前runloop内操作其它线程的runloop对象;
3、runloop对象在第一次获取runloop时创建,在线程结束后销毁;
三、runloop的Mode模式
NSDefaultRunLoopMode、UITrackingRunLoopMode、kCFRunLoopCommonModes(伪模式)
UITrackingRunLoopMode属于追踪模式,用于追踪继承自UIScrollview的滚动,保证其流程。