默認就會執行 ,是在 NSDefaultRunLoopMode 模式下運行的 。如果滑動會切換 UITrackingRunLoopMode 定時器失效。
[NSTimer scheduledTimerWithTimeInterval:1 repeats:YES block:^(NSTimer * _Nonnull timer) {
NSLog(@"currentMode == %@",[NSRunLoop currentRunLoop].currentMode);
}];
默認不會執行 ,需要添加到 當前RunLoop 可以指定具體的運行模式.NSRunLoopCommonModes 不是真正的模式,是佔位模式(NSDefaultRunLoopMode、UITrackingRunLoopMode)都會執行。
NSTimer * timer = [NSTimer timerWithTimeInterval:2 repeats:YES block:^(NSTimer * _Nonnull timer) {
NSLog(@"currentMode= %@",[NSRunLoop currentRunLoop].currentMode);
}];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];