// // ViewController.m // GCD 定时器 // // #import "ViewController.h" NSInteger count = 0; @interface ViewController () @property (nonatomic, strong)dispatch_source_t time; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{//获得队列 dispatch_queue_t queue = dispatch_get_global_queue(0, 0); //创建一个定时器 self.time = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); //设置开始时间 dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)); //设置时间间隔 uint64_t interval = (uint64_t)(2.0* NSEC_PER_SEC); //设置定时器 dispatch_source_set_timer(self.time, start, interval, 0); //设置回调 dispatch_source_set_event_handler(self.time, ^{ //设置当执行五次是取消定时器 count++; if(count == 5){ dispatch_cancel(self.time); } }); //由于定时器默认是暂停的所以我们启动一下 //启动定时器 dispatch_resume(self.time); } @end