iOS GCD定时器如何改写为长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计817个文字,预计阅读时间需要4分钟。
前言:CADisplayLink、NSTimer 不准时CADisplayLink、NSTimer 是基于 RunLoop 机制的,如果 RunLoop 的任务过于繁重,可能会导致这两个定时器不准确。
举例:添加了我们创建的一个 NSTimer 定时器
前言:CADisplayLink、NSTimer 不准时 CADisplayLink、NSTimer是基于RunLoop机制的,如果RunLoop的任务过于繁重,有可能会导致前两个定时器不准时。
举个例子:
加入我们创建了一个NSTimer定时器,每1秒钟做任务。那么,什么时候执行NSTimer呢?
是在RunLoop跑圈的过程中执行NSTimer定时器,而RunLoop跑完一圈执行的时间不固定,也就导致有可能1秒钟过去了,但是RunLoop还没有执行到定时器的任务,那么,这就造成定时器有可能不准时。
GCD是不依赖与RunLoop,是直接跟系统内核交互的。时间比较准确。
本文共计817个文字,预计阅读时间需要4分钟。
前言:CADisplayLink、NSTimer 不准时CADisplayLink、NSTimer 是基于 RunLoop 机制的,如果 RunLoop 的任务过于繁重,可能会导致这两个定时器不准确。
举例:添加了我们创建的一个 NSTimer 定时器
前言:CADisplayLink、NSTimer 不准时 CADisplayLink、NSTimer是基于RunLoop机制的,如果RunLoop的任务过于繁重,有可能会导致前两个定时器不准时。
举个例子:
加入我们创建了一个NSTimer定时器,每1秒钟做任务。那么,什么时候执行NSTimer呢?
是在RunLoop跑圈的过程中执行NSTimer定时器,而RunLoop跑完一圈执行的时间不固定,也就导致有可能1秒钟过去了,但是RunLoop还没有执行到定时器的任务,那么,这就造成定时器有可能不准时。
GCD是不依赖与RunLoop,是直接跟系统内核交互的。时间比较准确。

