美文网首页
GCD定时器使用

GCD定时器使用

作者: 有梦才可以远航 | 来源:发表于2019-04-11 20:16 被阅读0次

    iOS中的常用定时器分为这几类:

    1. NSTimer
    2. CADisplayLink
    3. GCD定时器

    选择GCD定时器原因:

    • 时间准确
    • GCD定时器不依赖NSRunLoop
    • 相对操作简单,安全

    使用:

        // 获得队列 dispatch_get_global_queue获取全局队列
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
        
        //创建一个定时器  DISPATCH_SOURCE_TYPE_TIMER表示定时器
        dispatch_source_t dispatchSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
        
        //由于定时器默认是暂停的所以我们启动一下
        //启动定时器
        dispatch_resume(dispatchSource);
        
        //设置开始时间 dispatch_walltime设定的时间段是绝对的,与设备是否running无关
        dispatch_time_t start = dispatch_walltime(NULL, (int64_t)(0.0 * NSEC_PER_SEC));
        
        //设置时间间隔 NSEC_PER_SEC表示的是秒数 interval为间隔时间
        uint64_t time = (uint64_t)(interval * NSEC_PER_SEC);
    
        //设置定时器
        dispatch_source_set_timer(dispatchSource, start, time, 0);
        
        //设置回调 时间间隔到点时执行block
        dispatch_source_set_event_handler(dispatchSource, ^{
             //执行操作
        });
       
        //取消定时器
        dispatch_source_cancel(dispatchSource);
    

    具体使用看可以移步demo

    相关文章

      网友评论

          本文标题:GCD定时器使用

          本文链接:https://www.haomeiwen.com/subject/dgooiqtx.html