定时器的实现:
GCD定时器优缺点:
1.它不需要显示的停掉定时器,由系统帮助我们处理。不需要考虑内存泄露问题。
2.时间精度上存在问题,存在误差又是达到0.2秒。
3.这个定时器作用于他自己开辟线程里边的runloop中,在tableView中使用不会出现问题。
NSTimer定时器优缺点:
1.定时器精度较为准确。
2.需要考虑停掉定时器,来解决内存释放的问题。
3.NSTimer是作用于当前的runloop里边的,如果是把定时器用到tableView里边可能会出现问题。
注意:
为什么要把这类的定时器source设置为全局变量呢?设置为局部变量不可以吗?答案是不可以。先明确子线程的生命周期这个概念:
当子线程的任务执行完之后,子线程会自动退出。
那这里我们的任务什么时候结束呢?这里结束的标志依赖于source的生命周期,source消亡,当source消亡就意味着线程终止。因此我们不能把它生命为局部变量。