美文网首页程序员
iOS NSTimer没有GCD Timer准时的原因

iOS NSTimer没有GCD Timer准时的原因

作者: wp_Demo | 来源:发表于2018-12-24 21:17 被阅读0次

    NSTimer不准时的原因:
    1:RunLoop循环处理的时间
    2:受RunLoop模式的影响

    gcd的timer与NSTimer是不同的
    1:都是源,gcd的timer是dispatch的源,而NSTimer是RunLoop的源
    2:gcd的timer不需要加入mode,那么就不会受到切换模式的影响了
    3:gcd的timer加在了主线程是需要runLoop调用的,但是当添加到子线程是不受runLoop影响的

    关于第三点可以通过打断点看一下调用:
    当我们把gcd的timer加在的主线程:
    2.png
    可以看到是有RunLoop参与的
    但是当我们添加在子线程:
    14.png
    可以看到是没有runLoop参与的

    所以我们是否可以得出:
    如果要写gcd的timer的话,就不要添加在主线程,因为会收到RunLoop循环时间的影响.添加在子线程,就可以了.当然这个也要看具体场景了.

    相关文章

      网友评论

        本文标题:iOS NSTimer没有GCD Timer准时的原因

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