背景:
- 添加Timer,當(dāng)拖動tableView的時候,
timer失效。
失效原因:
- runloop有兩種model:
kCFRunLoopDefaultMode(NSDefaultRunLoopMode)(App的默認(rèn)Mode,通常主線程是在這個Mode下運行)和UITrackingRunLoopMode(界面跟蹤 Mode,用于 ScrollView 追蹤觸摸滑動); - 而 Timer 是在model中;
- 常規(guī)的添加timer方法,只添加在了
kCFRunLoopDefaultMode(NSDefaultRunLoopMode)中,拖動tableView時,model切換為UITrackingRunLoopMode,而里面沒有定義Timer,所以timer就失效了。
解決:
- 給兩種model都添加
timer:
NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 repeats:YES block:^(NSTimer * _Nonnull timer) {
}];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];