GCD定時器使用

iOS中的常用定時器分為這幾類:

  1. NSTimer
  2. CADisplayLink
  3. GCD定時器

選擇GCD定時器原因:

  • 時間準確
  • GCD定時器不依賴NSRunLoop
  • 相對操作簡單,安全

使用:

    // 獲得隊列 dispatch_get_global_queue獲取全局隊列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
    
    //創(chuàng)建一個定時器  DISPATCH_SOURCE_TYPE_TIMER表示定時器
    dispatch_source_t dispatchSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    
    //由于定時器默認是暫停的所以我們啟動一下
    //啟動定時器
    dispatch_resume(dispatchSource);
    
    //設(shè)置開始時間 dispatch_walltime設(shè)定的時間段是絕對的,與設(shè)備是否running無關(guān)
    dispatch_time_t start = dispatch_walltime(NULL, (int64_t)(0.0 * NSEC_PER_SEC));
    
    //設(shè)置時間間隔 NSEC_PER_SEC表示的是秒數(shù) interval為間隔時間
    uint64_t time = (uint64_t)(interval * NSEC_PER_SEC);

    //設(shè)置定時器
    dispatch_source_set_timer(dispatchSource, start, time, 0);
    
    //設(shè)置回調(diào) 時間間隔到點時執(zhí)行block
    dispatch_source_set_event_handler(dispatchSource, ^{
         //執(zhí)行操作
    });
   
    //取消定時器
    dispatch_source_cancel(dispatchSource);

具體使用看可以移步demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 多次調(diào)用暫停dispatch_suspend 再調(diào)用取消dispatch_cancel 不崩潰 多次調(diào)用繼續(xù)dis...
    LD_左岸閱讀 492評論 0 0
  • 最近看了一下 iOS 的定時器的使用,我們來模擬一個發(fā)送短信驗證碼時候的等待計時動畫 要想了解定時器,首先需要了解...
    TomatosX閱讀 1,191評論 0 0
  • 明高濂的養(yǎng)生經(jīng)典《遵生八箋》中寫道:"人飲真茶,能止渴消食,除痰少睡,利水道,明目益思,除煩去膩,人固不可一日無茶...
    靜水時波閱讀 307評論 0 0
  • 曾經(jīng)以為,過去的都已過去; 曾經(jīng)以為,自己的心已足夠堅強; 曾經(jīng)以為,彼此就是永遠的永遠; 曾經(jīng)以為,自己就是這世...
    Fwx煙雨傾城閱讀 387評論 0 2
  • ---中嘉良品百豆通--- 中嘉良品百豆通采用天然黑豆,茯苓,山楂,蜂蜜等配方合成酸甜可口的果糕,讓便秘患者不再為...
    平想之旅閱讀 356評論 0 0

友情鏈接更多精彩內(nèi)容