码迷,mamicode.com
首页 > 其他好文 > 详细

GCD定时器

时间:2014-11-12 10:36:07      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:ios   gcd   

GCD定时器

by 伍雪颖

+ (GCDTimer *)repeatingTimer:(NSTimeInterval)seconds
                                      block:(void (^)(void))block {
  NSParameterAssert(seconds);
  NSParameterAssert(block);

  GCDTimer *timer = [[self alloc] init];
  timer.block = block;
  timer.source = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,
                                        0, 0,
                                        dispatch_get_main_queue());
  uint64_t nsec = (uint64_t)(seconds * NSEC_PER_SEC);
  dispatch_source_set_timer(timer.source,
                            dispatch_time(DISPATCH_TIME_NOW, nsec),
                            nsec, 0);
  dispatch_source_set_event_handler(timer.source, block);
  dispatch_resume(timer.source);
  return timer;
}

- (void)invalidate {
  if (self.source) {
    dispatch_source_cancel(self.source);
    self.source = nil;
  }
  self.block = nil;
}

__block int n=0;
    self.timer = [GCDTimer repeatingTimer:1 block:^{
        n++;
        NSLog(@"Hello");
        if (n == 3) {
            [self.timer invalidate];
        }
    }];
使用简单方便.

GCD定时器

标签:ios   gcd   

原文地址:http://blog.csdn.net/rainlesvio/article/details/41038637

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!