可取消的GCD 定时器

#import"ViewController.h"

NSInteger count=0;

@interfaceViewController ()

@property (nonatomic, strong)dispatch_source_t time;

@end

@implementationViewController

- (void)viewDidLoad {

[super viewDidLoad];

}

-(void)touchesBegan:(NSSet *)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, ^{

NSLog(@"执行操作");

//设置当执行五次是取消定时器

count++;

if(count ==5){

dispatch_cancel(self.time);

}

});//由于定时器默认是暂停的所以我们启动一下//启动定时器dispatch_resume(self.time);

}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Dispatch Sources 现代系统通常提供异步接口,允许应用向系统提交请求,然后在系统处理请求时应用可以继...
    YangPu阅读 346评论 0 0
  • 一. NSTimer NSTimer的初始化方法有以下几种: 会自动启动, 并加入* MainRunloop*的*...
    codeshow阅读 526评论 0 0
  • Dispatch Sources 现代系统通常提供异步接口,允许应用向系统提交请求,然后在系统处理请求时应用可以继...
    好雨知时节浩宇阅读 3,850评论 2 5
  • 目录(GCD): 关键词 混淆点 场景应用 总结 1. 关键词 线程概念: 独立执行的代码段,一个线程同时间只能执...
    Ryan___阅读 1,296评论 0 3
  • 风还在前行,习习于树林间,火烧后的云朵,漫步在山间。船行两岸,似有,骏马奔腾而过,老人独坐峰尖,象饮江中细水,笋立...
    寒冷的木制水晶阅读 182评论 0 0