前言
最近工作比较忙,但是还是出来更新博客了。今天博客中所涉及的内容并不复杂,都是一些平时常见的一些问题,通过这篇博客算是对UITableView中使用定时器的几种方式进行总结。本篇博客会给出在TableView中使用NSTimer或者DispatchSourcer中常见的五种方式。当然下方第一种方式是常规做法,不过也是UITableView中使用NSTimer的一个坑。其他三种方式是为了绕过这个坑的解决方案。
当然,本篇博客共涉及到了UITableView中使用定时器的四种实现方式,当然应该也还有其他实现方式,只不过目前我没有涉及到。欢迎在评论区提供其他实现方式,我会及时的整合到目前的Demo中。
接下来我们先来总结一下本篇博客所涉及的四种方式:
- 第一种就是直接在TableView的Cell上使用NSTimer,当然这种方式是有问题的,稍后会介绍。
- 第二种是将NSTimer添加到当前线程所对应的RunLoop中的commonModes中。
- 第三种是通过Dispatch中的TimerSource来实现定时器。
- 第四种是开启一个新的子线程,将NSTimer添加到这个子线程中的RunLoop中,并使用DefaultRunLoopModes来执行。
-
第五种方式就是使用CADisplayLink来实现。
下方我们将会根据具体的示例来详细的介绍以上这五种实现方式。
一、在Cell中直接使用NSTimer
首先我们按照常规做法,直接在UITableView的Cell上添加相应的NSTimer, 并使用scheduledTimer执行相应的代码块。这种方式没有什么特殊的就是对Timer的直接使用。下方是我们本部分的Timer的使用代码,当然是使用Swift来实现的,不过与OC的代码差不多。代码如下所示 :










