iOS开发iOS 开发继续加油程序员

封装GCD定时器

2016-08-10  本文已影响311人  落雪无痕_t

在开发过程中,对于定时器相信大家都不陌生,在http://www.jianshu.com/p/0194a0866872 这篇文章中,我有谈过各种定时器的优缺点,这里就简单封装一个实用的不依赖于RunLoop运行模式的GCD定时器

//存放timer对象
static NSMutableDictionary *timerDictionary;
//根据index来存储不同的timer对象
static NSInteger timerIndex = 0;

- 提供了一下两个类方法来初始化定时器,区别在于第一个初始化完成后自动开启定时器,第二个需要自己选择开启与否


//初始化定时器,默认初始化完成后开启


//初始化定时器,需要手动开启

- 具体方法的实现如下
  

//初始化定时器


- 那么解释一下这里的XHR_dispatch_timer,它是定义在XHRTimer这个单例内的一个私有类,是用来管理每一个timer对象的,以便在创建不同的timer对象执行不同的任务,并且定义了一个定时器状态枚举来标记运作状态,通过调整运作状态就可以控制定时器的开启、暂停、取消等操作,也避免了多次开启、暂停、取消而引起的bug,具体实现如下


- 暂停定时器的方法


//暂停定时器


- 手动开启/继续 定时器的方法

//手动开启/继续 定时器

- 取消定时器

//取消定时器
//取消定时器

注:
- 调用方法和NSTimer类似,使用类方法,需要执行的代码直接写在方法的block中,非常方便.需要注意的是,如果取消了定时器,如果想重新开启就需要重新初始化,不然就会崩溃。
- bolock传出去的参数是为了供外部解决循环应用问题的

作者:胥鸿儒
demo地址:https://github.com/xuhongru/GCDTimer
上一篇 下一篇

猜你喜欢

热点阅读