Runloop 之 解决NSTimer在滑动时停止工作的问题
2020-03-06 本文已影响0人
有梦想的狼
- 开启一个NSTimer时,它是在RunLoop的kCFRunLoopDefaultMode模式;当UI界面ScrollView滑动的时候,RunLoop的currentModel就切换为UITrackingRunLoopMode模式;
- RunLoop启动时只能选择一种模式运行,并且顶层的 RunLoop 的”commonModeItems”会被 RunLoop 自动更新到所有具有”Common”属性的 Mode 里去。又因为kCFRunLoopDefaultMode和UITrackingRunLoopMode这两种模式的commonModes都被标记为NSRunLoopCommonModes。
所以有以下两种解决方案:
1.1. 将NSTimer都加入到这两种模式中。
1.2. 将NSTimer标记为NSRunLoopCommonModes。
NSTimer