美文网首页
iOS中的Timer Note

iOS中的Timer Note

作者: MadLife程序员 | 来源:发表于2015-12-22 20:21 被阅读42次

    iOS中的Timer Note

    • NSTimer:
      NSTimer就是CFRunLoopTimerRef,一个NSTimer注册到RunLoop之后,RunLoop会为其重复的时间点注册耗时间。
      然而因为RunLoop为了节省资源,并不会在非常准确的时间点回调这个Timer,有一个属性叫做Tolerance(宽容度),假如超过其最大的误差,那个时间点的回调将会跳过去。

    CFRunLoopTimerRef 是基于时间的触发器,它和 NSTimer 是toll-free bridged 的,可以混用。其包含一个时间长度和一个回调(函数指针)。当其加入到 RunLoop 时,RunLoop会注册对应的时间点,当时间点到时,RunLoop会被唤醒以执行那个回调。

    • CADisplayLink:
      是一个和屏幕刷新率(60 times/second)一致的定时器(并不等同与NSTimer,内部实现是通过一个Source实现)。同样地,假如在两次屏幕刷新之间执行了一个长任务,那其中就会有一帧被跳过去。

    • PerfromSelector/ dispatch_after:
      上面两个函数都是通过创建一个Timer并添加到当前的RunLoop中。假如当前的线程没有RunLoop,则方法失效。

    相关文章

      网友评论

          本文标题:iOS中的Timer Note

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