1、控制线程生命周期<线程保活>
2、解决NSTimer在滑动时失效的问题
当scrollView滑动的时候,定时器会发现失效
static int count = 0;
[NSTimer scheduledTimerWithTimeInterval:1 repeats:YES block:^(NSTimer * _Nonnull timer) {
NSLog(@"count == %d",count++);
}];
原因:
NSTimer在RunLoop的Mode是NSDefaultRunLoopMode中的,
当滑动的时候RunLoop会切换到UITrackingRunLoopMode,所以NSTimer会失效。
解决:
将Timer添加到NSRunLoopCommonModes模式下面
NSTimer *timer = [NSTimer timerWithTimeInterval:1 repeats:YES block:^(NSTimer * _Nonnull timer) {
NSLog(@"count == %d",count++);
}];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
扩展:
NSRunLoopCommonModes 不是一种真正的Mode,Mode有两种
UITrackingRunLoopMode
NSDefaultRunLoopMode
NSRunLoopCommonModes可以认为是一种标记,这个标记包含UITrackingRunLoopMode和NSDefaultRunLoopMode
RunLoop和Timers的关系:
RunLoop中有一堆的Mode,Mode中存在着Timers
3、监控应用卡顿
4、性能优化
网友评论