iOS之UITableView计时器的实现方式总结(NSTimer、DispatchSource、CADisp

2020-01-21 07:32:35王冬梅

  iOS,UITableView,计时器,NSTimer,DispatchSource,CADisplayLink

四、DispatchTimerSource

接下来我们就不使用NSTimer来实现定时器了。在之前的博客中聊GCD时其中用到了DispatchTimerSource来实现定时器。接下来我们就在TableView的Cell上添加DispatchTimerSource,然后看一下运行效果。当然下方代码片段我们是在全局队列中添加的DispatchTimerSource,在主线程中进行更新。当然我们也可以在mainQueue中添加DispatchTimerSource,这样也是可以正常工作的。当然我们不建议在MainQueue中做,因为在编程时尽量的把一些和主线程关联不太大的操作放到子线程中去做。代码如下所示:

iOS,UITableView,计时器,NSTimer,DispatchSource,CADisplayLink

接下来我们来看一下上述的代码的运行效果,从该效果中我们可以看出该定时器是可以正常工作的。

  iOS,UITableView,计时器,NSTimer,DispatchSource,CADisplayLink

五、CADisplayLink

接下来我们来使用CADisplayLink来实现定时器功能,在之前的博客中我们也使用过CADisplayLink,不过是用来计算FPS的。下方代码片段中我们就使用CADisplayLink来实现的定时器。CADisplayLink可以添加到RunLoop中,RunLoop的每一次循环都会触发CADisplayLink所关联的方法。在屏幕不卡顿的情况下,每次循环的时间时1/60秒。