GCD定時器

GCD定時器

  • GCD定時器不受RunLoop的影響,調用頻率比較固定
// 聲明dispatch_source_t屬性
@property (nonatomic, strong) dispatch_source_t timer;

// 獲得隊列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
// 創建一個定時器
self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
// 設置定時器的各種屬性(幾時開始任務,每隔多長時間執行一次)
// GCD的時間參數,一般是納秒(1秒 == 10的9次方納秒)
// 何時開始執行第一個任務
// dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC) 比當前時間晚1秒
// 每隔多長時間執行一次interval:(uint64_t)(1.0 * NSEC_PER_SEC); 間隔1秒
dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC));
uint64_t interval = (uint64_t)(1.0 * NSEC_PER_SEC);
dispatch_source_set_timer(self.timer, start, interval, 0);
// 設置回調
dispatch_source_set_event_handler(self.timer, ^{
    // 設置需要處理的事情
});
// 啟動定時器
dispatch_resume(self.timer);


// 取消定時器
dispatch_cancel(self.timer);
self.timer = nil;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • GCD定時器要比NSTimer時間準確,為什么?因為NSTimer是受RunLoop模式影響的,但如果設置Trac...
    Mr丶炎閱讀 420評論 0 3
  • 最近看了一下 iOS 的定時器的使用,我們來模擬一個發送短信驗證碼時候的等待計時動畫 要想了解定時器,首先需要了解...
    TomatosX閱讀 1,158評論 0 0
  • 提到定時器,NStimer肯定是我們最為熟悉的。 但是NStimer有著很大的缺點,并不準確。 通俗點說,就是它該...
    mengyingguo閱讀 384評論 0 0
  • 《大學肆年》目錄 業務增長如此迅速,這是蔣學文沒有預料到的,都累成哈巴狗了還是忙不過來。蔣學文后悔當初做廣告紙的時...
    帝惡道閱讀 693評論 0 3
  • “我也不知道守了這家店多久了” “人們總是有很多想要刪除的記憶,驚恐的、害怕的、羞愧的……我幫助他們刪除這些不好的...
    linyata閱讀 445評論 0 1