创建不受滑动影响的NSTimer步骤:
1.手动创建一个NSTimer
2.获取当前线程的RunLoop
3.将NSTimer 按照指定模式加入到RunLoop中
具体代码如下:
- (void)addTimer{
NSTimer *timer= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFunction:) userInfo:nil repeats:YES];
[timer setFireDate:[NSDate distantPast]];
//解决滑动 定时器不走的问题
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoopaddTimer:timer forMode:NSRunLoopCommonModes];
}
本质:
加入到commonModes中,实际上系统是找出commonModes代表的所有Mode(如NSDefaultRunLoopMode、UITrackingRunLoopMode),然后分别将其加入这些mode中。