定时器

第一种 : NSTimer

    @property(nonatomic,strong)NSTimer *timer;

    //创建定时器
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(imageChange) userInfo:nil repeats:YES];    

     //定时器实现方法
    - (void)imageChange{
  
    }  

第二种 : GCD定时器

    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
    dispatch_source_set_event_handler(timer, ^{ 
          NSLog(@"这个是GCD的定时器"); 
          if (/* DISABLES CODE */ (NO)) { 
              // 这个Block里一定要写这行代码,要不然定时器不会执行
              dispatch_source_cancel(timer); 
          }
    });
    dispatch_resume(timer);

第三种:CADisplayLink

  CADisplayLink *display= [CADisplayLink displayLinkWithTarget:self selector:@selector(updateImage)];

  [display addToRunLoop:[NSRunLoopmainRunLoop] forMode:NSDefaultRunLoopMode];

说明: CADisplayLink刷帧,默认每秒刷新60次。该定时器创建之后,默认是不会执行的,需要把它加载到消息循环中

你可能感兴趣的:(定时器)