GCD定时器使用

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定时器使用)