iOS开发 GCD定时器的使用

前言:在iOS开发过程中,相信大家在使用定时器的首先会想到NSTimer,也是最熟练的,但是它在计时并不准确,会受到其它事件的影响。所以论定时器的精度来说, dispatch_source_t要比 NSTimer更精度,系统自动触发,系统级别的源,基于GDC上实现。

1.先看如何调用:使用起来非常简单,没什么难度
    ////快速创建定时器对象
    __block NSTimeInterval time = 0;
    self.timer = [GBTimer repeatTimerWithTimeInterval:1 repeatBlock:^(NSTimeInterval currentTimeInterval) {
        time++;
        NSLog(@"time:%f, currentTimeInterval:%f", time, currentTimeInterval);
    }];
    //倒计时定时器的使用
    self.gb_timer = [GBTimer countdownTimerWithSeconds:5 countdownBlock:^(NSTimeInterval remainSecond) {
        NSLog(@"currentTiem:%f",remainSecond);
        [self changeSkitBtnTitleWith:(int)remainSecond];
        if (remainSecond == 0) {
            [self dismissView];
        }
    }];

2.我们看看.h提供了哪些典型的接口
/**
 *  便利创建每秒操作定时器对象
 *
 *  注意:
 *  1. 回调在全局并发队列中执行;
 *  2. 调用者必须持有该对象,其生命周期随持有者;
 *
 *  @param repeatBlock 每秒回调
 *
 *  @return GBTimer 对象
 */
+ (instancetype)repeatTimerWithBlock:(void (^)(NSTimeInterval currentTimeInterval))repeatBlock

/**
 快速创建倒计时对象
 注意:回调在主队列执行
 @param seconds 倒计时时长
 @param countdownBlock 每秒回调
 @return GBTimer 对象
 */
+ (instancetype)countdownTimerWithSeconds:(NSTimeInterval)seconds countdownBlock:(void (^)(NSTimeInterval remainSecond))countdownBlock;

最后,.m文件中的代码我就不贴上来了,大家有兴趣可以下载使用
传送门

你可能感兴趣的:(iOS开发 GCD定时器的使用)