一、继续前面的情况,导入
#import "GCD.h"
二、增加 gcdTimer、normalTimer变量
@property (nonatomic,strong)GCDTimer *gcdTimer;
@property (nonatomic,strong)NSTimer *normalTimer;
实现下面两个方法:
- (void)runGCDTimer
{
self.gcdTimer = [[GCDTimer alloc]initInQueue:[GCDQueue mainQueue]];
//指定时间间隔以及要执行的事件
[self.gcdTimer event:^{
NSLog(@"GCD定时器");
} timeInterval:NSEC_PER_SEC];//1 sec
//运行GCD定时器
[self.gcdTimer start];
}
- (void)runTimer
{
self.normalTimer = [NSTimerscheduledTimerWithTimeInterval:1
target:self
selector:@selector(threadEvent:)
userInfo:nil
repeats:YES];
}
runGCDTimer结果:
2015-07-11 12:17:51.542 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:17:52.517 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:17:53.515 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:17:54.516 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:17:55.514 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:17:56.514 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:17:57.516 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:17:58.519 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:17:59.515 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:18:00.514 GCDDelay[3255:259553] GCD定时器
2015-07-11 12:18:01.516 GCDDelay[3255:259553] GCD定时器
NSTimer 运行结果:
2015-07-11 12:21:34.475 GCDDelay[3307:263396] NSThread线程事件
2015-07-11 12:21:35.473 GCDDelay[3307:263396] NSThread线程事件
2015-07-11 12:21:36.470 GCDDelay[3307:263396] NSThread线程事件
2015-07-11 12:21:37.471 GCDDelay[3307:263396] NSThread线程事件
2015-07-11 12:21:38.474 GCDDelay[3307:263396] NSThread线程事件
2015-07-11 12:21:39.474 GCDDelay[3307:263396] NSThread线程事件
2015-07-11 12:21:40.474 GCDDelay[3307:263396] NSThread线程事件
2015-07-11 12
总结:
从上面可以看出NSTimer 时间精度要比GCDTimer要好很多,至小很小出现误差超过1毫秒的情况
NSTimer作用域当前RunLoop里去的,如果NSTimer 用于UITableView 中会出现奇怪的问题,GCD 不存在这些问题