定時器

weixin_33782386發表於2016-09-24

第一種 : 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次。該定時器建立之後,預設是不會執行的,需要把它載入到訊息迴圈中

相關文章