美文网首页
RunLoop -- 在实际开发中的应用

RunLoop -- 在实际开发中的应用

作者: 踩坑小分队 | 来源:发表于2020-04-11 21:34 被阅读0次
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、性能优化

相关文章

网友评论

      本文标题:RunLoop -- 在实际开发中的应用

      本文链接:https://www.haomeiwen.com/subject/xlmbphtx.html