GCD定时器

GCD定时器

  • GCD定时器不受RunLoop的影响,调用频率比较固定
// 声明dispatch_source_t属性
@property (nonatomic, strong) dispatch_source_t timer;

// 获得队列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
// 创建一个定时器
self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
// 设置定时器的各种属性(几时开始任务,每隔多长时间执行一次)
// GCD的时间参数,一般是纳秒(1秒 == 10的9次方纳秒)
// 何时开始执行第一个任务
// dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC) 比当前时间晚1秒
// 每隔多长时间执行一次interval:(uint64_t)(1.0 * NSEC_PER_SEC); 间隔1秒
dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC));
uint64_t interval = (uint64_t)(1.0 * NSEC_PER_SEC);
dispatch_source_set_timer(self.timer, start, interval, 0);
// 设置回调
dispatch_source_set_event_handler(self.timer, ^{
    // 设置需要处理的事情
});
// 启动定时器
dispatch_resume(self.timer);


// 取消定时器
dispatch_cancel(self.timer);
self.timer = nil;

推荐阅读更多精彩内容

  • GCD定时器要比NSTimer时间准确,为什么?因为NSTimer是受RunLoop模式影响的,但如果设置Trac...
    Mr丶炎阅读 293评论 0 3
  • 最近看了一下 iOS 的定时器的使用,我们来模拟一个发送短信验证码时候的等待计时动画 要想了解定时器,首先需要了解...
    TomatosX阅读 976评论 0 0
  • 提到定时器,NStimer肯定是我们最为熟悉的。 但是NStimer有着很大的缺点,并不准确。 通俗点说,就是它该...
    mengyingguo阅读 300评论 0 0
  • 【尧日篇第二十】 原文(20.3):孔子曰:不知命,无以为君子,不知礼,无以立也,不知言,无以知人也。 译文:孔子...
    鹊神阅读 711评论 0 1
  • 《大学肆年》目录 业务增长如此迅速,这是蒋学文没有预料到的,都累成哈巴狗了还是忙不过来。蒋学文后悔当初做广告纸的时...
    帝恶道阅读 387评论 0 3
  • “我也不知道守了这家店多久了” “人们总是有很多想要删除的记忆,惊恐的、害怕的、羞愧的……我帮助他们删除这些不好的...
    linyata阅读 267评论 0 1
  • 夜很黑,也很冷!很凄凉,很安静!很适合一个人安静的离开这个世界! 我很颓废,也很无奈。 这一秒,可能是我人生心情最...
    大韩天子阅读 303评论 0 0
  • 自从我的那颗大牙掉落后,隔三差五地发炎,一直搅得我心烦意乱,让我茶饭不思,每天捂着半个肿胀的脸,害的我爹啊、娘啊...
    ladybird628阅读 321评论 0 0