dispatch_after使用方法详解

    dispatch_after能让我们添加进队列的任务延时执行,该函数并不是在指定时间后执行处理,而只是在指定时间追加处理到dispatch_queue
    该方法的第一个参数是time,第二个参数是dispatch_queue,第三个参数是要执行的block。
    dispatch_time_t有两种形式的构造方式,第一种相对时间:DISPATCH_TIME_NOW表示现在,NSEC_PER_SEC表示的是秒数,它还提供了NSEC_PER_MSEC表示毫秒。第二种是绝对时间,通过dispatch_walltime函数来获取,dispatch_walltime需要使用一个timespec的结构体来得到dispatch_time_t。
    以下代码可以很清楚地看到dispatch_after的执行效果,
    dispatch_time_t time=dispatch_time(DISPATCH_TIME_NOW, 10*NSEC_PER_SEC);
    dispatch_after(time, dispatch_get_main_queue(), ^{
        NSLog(@"hello");
    });
    _count=1;
    _timer=[NSTimer timerWithTimeInterval:1 target:self selector:@selector(run) userInfo:nil repeats:YES];

    [[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSDefaultRunLoopMode];


  -(void)run
  {
    if (_count==10) {
        [_timer invalidate];
    }
    _count++;
    NSLog(@"the value is %d",_count);
}
result:
2014-12-26 20:30:19.549 testApp[24698:196764] the value is 2
2014-12-26 20:30:20.549 testApp[24698:196764] the value is 3
2014-12-26 20:30:21.549 testApp[24698:196764] the value is 4
2014-12-26 20:30:22.549 testApp[24698:196764] the value is 5
2014-12-26 20:30:23.549 testApp[24698:196764] the value is 6
2014-12-26 20:30:24.549 testApp[24698:196764] the value is 7
2014-12-26 20:30:25.548 testApp[24698:196764] the value is 8
2014-12-26 20:30:26.550 testApp[24698:196764] the value is 9
2014-12-26 20:30:27.550 testApp[24698:196764] the value is 10
2014-12-26 20:30:28.549 testApp[24698:196764] hello
2014-12-26 20:30:28.549 testApp[24698:196764] the value is 11





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值