GCD timer

1.GCD提供了一个类似于NSTimer的类:dispatch_source_t

这个类的特点:

GCD的timer 不受 runloop的 mode影响,会一直执行
GCD的timer 可以做到绝对精准

//用法:

//1.创建GCD定时器
    /**
     参数1:设定soucrce的类型: DISPATCH_SOURCE_TYPE_TIMER -> 定时器类型
     参数2:描述信息,线程id
     参数3:更详细的描述信息
     参数4:队列,决定了timer在执行任务的时候在什么线程中执行
     */
    self.gcdTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_queue_create(0, 0));
    
//2.设置定时器的其他参数
    /**
     参数1:对哪一个timer进行设置
     参数2:经过多少秒后启动
     参数3:执行任务的时间间隔
     参数4:误差度 传0表示决定精准
     */
    dispatch_source_set_timer(self.gcdTimer, DISPATCH_TIME_NOW, time * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
    
//3.为定时器添加需要还行的任务
    dispatch_source_set_event_handler(self.gcdTimer, action);

    
//4.启动GCD定时器
    dispatch_resume(self.gcdTimer);

为了方便使用,自己写了一个GCDTimer,支持cocopod :RFgcdTimer

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.NSTimer不准时的原因:(1).RunLoop循环处理时间,每次循环是固定时间,只有在这段时间才会去查看N...
    稻春阅读 1,399评论 0 3
  • RunLoop的基本了解 **1 . RunLoop字面的意思 : **运行循环 / 跑圈 **2 . 基本作用 ...
    Mario_ZJ阅读 628评论 1 3
  • 前言 文章主要会RunLoop源码进行剖析,里面会有对它的理解及注释,有不足望见解 1,RunLoop是什么? 广...
    MoShengLive阅读 4,534评论 0 4
  • 转自bireme,原地址:https://blog.ibireme.com/2015/05/18/runloop/...
    乜_啊_阅读 1,706评论 0 5
  • RunLoop 的概念 一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线...
    Mirsiter_魏阅读 690评论 0 2

友情链接更多精彩内容