维度 | GCD 计时器 (dispatch_source_t ) | NSTimer |
---|---|---|
依赖机制 | 直接挂在 GCD 队列;底层走 Mach 内核定时源 | 挂在 RunLoop,必须指定 RunLoop & mode |
线程上下文 | 哪个队列就在哪条线程回调(例中用 dispatch_get_main_queue() ) | 总在定时器所在的 RunLoop 线程(默认主线程 & NSDefaultRunLoopMode ) |
精度 | 纳秒级 API,<1 ms 误差(取决于 leeway ) | 由 RunLoop 驱动,误差受 RunLoop 阻塞/滚动 影响 |
延迟风险 | 队列不阻塞就能准时;可 DISPATCH_TIME_NOW + interval 精确起始 | UI 滑动等切换到 UITrackingRunLoopMode 时会 暂停,易错过触发 |
暂停/恢复 | dispatch_suspend / |