美文网首页
GCD中的定时器的使用方法!

GCD中的定时器的使用方法!

作者: 小吖朱 | 来源:发表于2017-01-16 11:57 被阅读0次

    在我们使用NSTimer的时候会出现一个问题,当我们去拖拽界面的时候定时器会停止,我们需要用到runloop,殊不知,还有一种方法就是GCD中的定时器:下面具体说一说GCD中的定时器怎么用!看代码!

    #import "ViewController.h"
    
    @interface ViewController ()
    /** 注释 */
    @property (nonatomic, strong) dispatch_source_t timer;
    @end
    
    @implementation ViewController
    
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        NSLog(@"%s",__func__);
        
        
        //1.创建GCD中的定时器
        /*
         第一个参数:source的类型DISPATCH_SOURCE_TYPE_TIMER 表示是定时器
         第二个参数:描述信息,线程ID
         第三个参数:更详细的描述信息
         第四个参数:队列,决定GCD定时器中的任务在哪个线程中执行
         */
        dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0));
        
        //2.设置定时器(起始时间|间隔时间|精准度)
        /*
         第一个参数:定时器对象
         第二个参数:起始时间,DISPATCH_TIME_NOW 从现在开始计时
         第三个参数:间隔时间 2.0 GCD中时间单位为纳秒
         第四个参数:精准度 绝对精准0
         */
        dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
        
        //3.设置定时器执行的任务
        dispatch_source_set_event_handler(timer, ^{
            NSLog(@"GCD---%@",[NSThread currentThread]);
        });
        
        //4.启动执行
        dispatch_resume(timer);
        
        self.timer = timer;
    }
    @end
    

    这是一个无比精准的定时器!

    相关文章

      网友评论

          本文标题:GCD中的定时器的使用方法!

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