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

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、性能优化

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在面试iOS应聘者的过程中,貌似流传着一个不成文的规矩,就是问:Runloop、Runtime、GCD这三个东西,...
    Kantoi阅读 4,079评论 0 0
  • 概要 在iOS开发中,Runtime与RunLoop应该是iOS Developer技术进阶时需要掌握的两方面知识...
    狗带儿阅读 5,081评论 0 0
  • 转自bireme,原地址:https://blog.ibireme.com/2015/05/18/runloop/...
    乜_啊_阅读 5,401评论 0 5
  • 转自http://blog.ibireme.com/2015/05/18/runloop 深入理解RunLoop ...
    飘金阅读 4,567评论 0 4
  • 喧哗,空白 灵修的人,盘腿。腔体的 兰馨,瑟叶,琴调,桂馥,空山…… 前行与后退,并无多大区分 鸟儿衔走的是袅袅,...
    澄默时节阅读 1,852评论 1 7