美文网首页
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