前言:在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文件中的代码我就不贴上来了,大家有兴趣可以下载使用
传送门