iOS開發(fā)-GCD定時器

/** 定時器(這里不用帶*,因為dispatch_source_t就是個類,內(nèi)部已經(jīng)包含了*) */

@property?(nonatomic,?strong)?dispatch_source_t?timer;

int?count?=?0;

-?(void)touchesBegan:(NSSet?*)touches?withEvent:(UIEvent?*)event

{

//?獲得隊列

//????dispatch_queue_t?queue?=?dispatch_get_global_queue(0,?0);

dispatch_queue_t?queue?=?dispatch_get_main_queue();

//?創(chuàng)建一個定時器(dispatch_source_t本質(zhì)還是個OC對象)

self.timer?=?dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,?0,?0,?queue);

//?設(shè)置定時器的各種屬性(幾時開始任務,每隔多長時間執(zhí)行一次)

//?GCD的時間參數(shù),一般是納秒?NSEC_PER_SEC(1秒?==?10的9次方納秒)

//?何時開始執(zhí)行第一個任務

//?dispatch_time(DISPATCH_TIME_NOW,?3.0?*?NSEC_PER_SEC)?比當前時間晚3秒

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);

//?設(shè)置回調(diào)

dispatch_source_set_event_handler(self.timer,?^{

NSLog(@"------------%@",?[NSThread?currentThread]);

count++;

//????????if?(count?==?4)?{

//????????????//?取消定時器

//????????????dispatch_cancel(self.timer);

//????????????self.timer?=?nil;

//????????}

});

//?啟動定時器

dispatch_resume(self.timer);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • Dispatch Sources 現(xiàn)代系統(tǒng)通常提供異步接口,允許應用向系統(tǒng)提交請求,然后在系統(tǒng)處理請求時應用可以繼...
    YangPu閱讀 346評論 0 0
  • 目錄(GCD): 關(guān)鍵詞 混淆點 場景應用 總結(jié) 1. 關(guān)鍵詞 線程概念: 獨立執(zhí)行的代碼段,一個線程同時間只能執(zhí)...
    Ryan___閱讀 1,296評論 0 3
  • GCD筆記 總結(jié)一下多線程部分,最強大的無疑是GCD,那么先從這一塊部分講起. Dispatch Queue的種類...
    jins_1990閱讀 784評論 0 1
  • iOS 多線程系列 -- 基礎(chǔ)概述iOS 多線程系列 -- pthreadiOS 多線程系列 -- NSThrea...
    shannoon閱讀 1,610評論 0 5
  • 《她僅有的是月光》 她只身坐在田野上她看著月光瀉下的素裝 我在城市的中央我看到的天空是樓層的燈光 她有最珍貴的寶藏...
    荒骨閱讀 368評論 11 9