亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

Dispatch Source Timer的使用及注意事項介紹

2020-02-19 15:45:33
字體:
來源:轉載
供稿:網友

Dispatch Source Timer是與Dispatch Queue一起使用的計時器,當我們使用調度源計時器比使用nstimer更自然、更高效,下面武林技術頻道小編將給大家帶來Dispatch Source Timer的使用及注意事項介紹。

創建 Timer

Dispatch Source Timer 首先其實是 Dispatch Source 的一種,關于 Dispatch Source 的內容在這里就不再贅述了。下面是蘋果官方文檔里給出的創建 Dispatch Timer 的代碼:

dispatch_source_t CreateDispatchTimer(uint64_t interval,  uint64_t leeway,  dispatch_queue_t queue,  dispatch_block_t block){ dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,       0, 0, queue); if (timer) { dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), interval, leeway); dispatch_source_set_event_handler(timer, block); dispatch_resume(timer); } return timer;}

有幾個地方需要注意:

  1. Dispatch Source Timer 是間隔定時器,也就是說每隔一段時間間隔定時器就會觸發。在 NSTimer 中要做到同樣的效果需要手動把 repeats 設置為 YES。
  2. dispatch_source_set_timer 中第二個參數,當我們使用dispatch_time 或者 DISPATCH_TIME_NOW 時,系統會使用默認時鐘來進行計時。然而當系統休眠的時候,默認時鐘是不走的,也就會導致計時器停止。使用 dispatch_walltime 可以讓計時器按照真實時間間隔進行計時。
  3. dispatch_source_set_timer 的第四個參數 leeway 指的是一個期望的容忍時間,將它設置為 1 秒,意味著系統有可能在定時器時間到達的前 1 秒或者后 1 秒才真正觸發定時器。在調用時推薦設置一個合理的 leeway 值。需要注意,就算指定 leeway 值為 0,系統也無法保證完全精確的觸發時間,只是會盡可能滿足這個需求。
  4. event handler block 中的代碼會在指定的 queue 中執行。當 queue 是后臺線程的時候,dispatch timer 相比 NSTimer 就好操作一些了。因為 NSTimer 是需要 Runloop 支持的,如果要在后臺 dispatch queue 中使用,則需要手動添加 Runloop。使用 dispatch timer 就簡單很多了。
  5. dispatch_source_set_event_handler 這個函數在執行完之后,block 會立馬執行一遍,后面隔一定時間間隔再執行一次。而 NSTimer 第一次執行是到計時器觸發之后。這也是和 NSTimer 之間的一個顯著區別。

停止 Timer

停止 Dispatch Timer 有兩種方法,一種是使用 dispatch_suspend,另外一種是使用 dispatch_source_cancel。

dispatch_suspend 嚴格上只是把 Timer 暫時掛起,它和 dispatch_resume 是一個平衡調用,兩者分別會減少和增加 dispatch 對象的掛起計數。當這個計數大于 0 的時候,Timer 就會執行。在掛起期間,產生的事件會積累起來,等到 resume 的時候會融合為一個事件發送。

需要注意的是:dispatch source 并沒有提供用于檢測 source 本身的掛起計數的 API,也就是說外部不能得知一個 source 當前是不是掛起狀態,在設計代碼邏輯時需要考慮到這一點。

dispatch_source_cancel 則是真正意義上的取消 Timer。被取消之后如果想再次執行 Timer,只能重新創建新的 Timer。這個過程類似于對 NSTimer 執行 invalidate。

關于取消 Timer,另外一個很重要的注意事項:dispatch_suspend 之后的 Timer,是不能被釋放的!下面的代碼會引起崩潰:

- (void)stopTimer{ dispatch_suspend(_timer); _timer = nil; // EXC_BAD_INSTRUCTION 崩潰}

因此使用 dispatch_suspend 時,Timer 本身的實例需要一直保持。使用 dispatch_source_cancel 則沒有這個限制:

- (void)stopTimer{ dispatch_source_cancel(_timer); _timer = nil; // OK}

以上就是有關Dispatch Source Timer的使用及注意事項介紹,武林技術頻道發布的知識還是很靠譜的,可以幫助我們找到適合自己的操作。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www高清在线视频日韩欧美| 亚洲综合在线播放| 国产精品高精视频免费| 国产精品久久久久久av福利软件| 久久久久久国产精品三级玉女聊斋| 欧美日本中文字幕| 狠狠色狠狠色综合日日小说| 欧美视频在线看| 久久91超碰青草是什么| 美女性感视频久久久| 日韩中文字幕精品| 国产精品香蕉av| 久久久久久久久久久免费精品| 狠狠躁天天躁日日躁欧美| 国产欧美va欧美va香蕉在| 日韩国产中文字幕| 久久精品国产久精国产一老狼| 中文字幕欧美国内| 一本大道久久加勒比香蕉| 欧美国产乱视频| 成人网欧美在线视频| 国产午夜精品全部视频播放| 另类少妇人与禽zozz0性伦| 91超碰中文字幕久久精品| 国产日韩av在线| 日本午夜精品理论片a级appf发布| 日韩国产精品亚洲а∨天堂免| 亚洲综合中文字幕在线观看| 亚洲自拍偷拍色片视频| 亚洲精品视频中文字幕| 精品国产一区二区三区久久狼5月| 亚洲乱码av中文一区二区| 欧美极品少妇xxxxⅹ免费视频| 自拍偷拍亚洲欧美| 亚洲精品国产品国语在线| 狠狠色狠狠色综合日日小说| 日韩在线视频观看正片免费网站| 中文字幕免费精品一区高清| 国产精品丝袜久久久久久不卡| 亚洲第一av网| 亚洲激情视频网站| 欧美在线www| 5278欧美一区二区三区| 国产精品小说在线| 日韩中文在线观看| 国产精品久久久久久久av电影| 久久久在线免费观看| 久久精品国产一区| 日韩电影中文字幕在线观看| 成人中文字幕+乱码+中文字幕| 国产美女久久久| 亚洲网站在线观看| 日韩在线中文字幕| 中文字幕日韩免费视频| 91av视频导航| 日韩精品中文字幕视频在线| 日韩欧美精品在线观看| 中文字幕在线看视频国产欧美| 欧美丰满老妇厨房牲生活| 日韩av电影手机在线| 国产午夜精品全部视频在线播放| 国产精品福利无圣光在线一区| 色综合影院在线| 精品亚洲va在线va天堂资源站| 日韩国产一区三区| 米奇精品一区二区三区在线观看| 亚洲无限av看| 国产精品高精视频免费| 国模精品视频一区二区| 精品亚洲国产成av人片传媒| 国产v综合ⅴ日韩v欧美大片| 日韩av在线资源| 亚洲无亚洲人成网站77777| 91精品国产综合久久久久久久久| 91精品在线一区| 久久亚洲精品一区| 在线观看免费高清视频97| 亚洲自拍偷拍网址| 欧美在线一区二区三区四| 久久人人爽人人爽人人片av高请| 久久视频国产精品免费视频在线| 亚洲第一页中文字幕| 成人日韩av在线| 日日噜噜噜夜夜爽亚洲精品| 欧美精品www在线观看| 久久伊人精品天天| 欧美日韩国产限制| 日韩在线视频国产| 久久久女人电视剧免费播放下载| 亚洲精品日韩激情在线电影| 国产精品久久一区| 久久精品亚洲热| 中文字幕日韩精品在线观看| 992tv成人免费视频| 91精品久久久久久久久中文字幕| 亚洲国产精品久久久久久| 精品亚洲国产成av人片传媒| 久久精品久久精品亚洲人| 国产成人综合精品| 国产在线98福利播放视频| 日韩视频在线观看免费| 久久久噜噜噜久久| 亚洲无av在线中文字幕| 91精品免费看| 亚洲xxxx妇黄裸体| 成人一区二区电影| 日本欧美一二三区| 精品国产成人av| 91成人精品网站| 国内精品模特av私拍在线观看| 日本精品免费一区二区三区| 午夜精品一区二区三区视频免费看| 日本一区二区三区四区视频| 国产精品白嫩美女在线观看| 亚洲国产精品专区久久| 日韩精品www| 久久亚洲精品网站| 最近2019中文字幕在线高清| 中文字幕国产亚洲| 午夜精品久久久99热福利| 性欧美暴力猛交69hd| 国产精品高清免费在线观看| 欧美贵妇videos办公室| 国产主播喷水一区二区| 亚洲xxxxx电影| 日韩av在线一区二区| 精品无人区太爽高潮在线播放| 日韩中文字幕国产精品| 91av国产在线| 成人免费在线视频网站| 丝袜美腿精品国产二区| 久久久久久国产| 精品国产一区二区在线| 亚洲午夜久久久久久久| 亚洲成人精品av| 中文字幕亚洲综合久久| 日韩综合视频在线观看| 性色av一区二区咪爱| 国外成人免费在线播放| www.欧美视频| 国产精品久久久久久久午夜| 国产精品扒开腿做爽爽爽男男| 一夜七次郎国产精品亚洲| 欧美在线视频观看| 亚州国产精品久久久| 国产精品av网站| 国产精品久久久久久久午夜| 中文字幕亚洲情99在线| 国产精品久久精品| 日韩av最新在线观看| 永久免费毛片在线播放不卡| 亚洲精品wwwww| 国产精品自产拍高潮在线观看| 欧美尤物巨大精品爽| 97不卡在线视频| 欧美国产一区二区三区| 亚洲国产精彩中文乱码av在线播放| 亚洲人成电影网站色| 国产综合视频在线观看| 1769国内精品视频在线播放| 日韩中文字幕国产| 亚洲精品久久久久中文字幕欢迎你| 国产精品美女免费| 成人免费在线网址|