GCD-定時器

定時器分為三種:1糠聪、NSTimer? ? ? 2、CADisplayLink ? ?3、GCD實現(xiàn)

今天著重學(xué)習(xí)一下GCD中的定時器實現(xiàn)方法

因為簡單傲隶,直接貼代碼:

#pragma mark -定時器

- (void)gcdTimer

{

//get the queue

dispatch_queue_t queue = dispatch_queue_create(0,0);

//create timer

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

//set begining time

dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0*NSEC_PER_SEC));

//set the interver

uint64_t interver = (uint64_t)(1.0*NSEC_PER_SEC);

dispatch_source_set_timer(self.timer, start, interver,0.0);

dispatch_source_set_event_handler(self.timer, ^{

dispatch_async(dispatch_get_global_queue(0,0), ^{

self.currentNum++;

NSLog(@"%li",self.currentNum);

if(self.currentNum >= MaxNum) {

//關(guān)閉定時器

dispatch_source_cancel(self.timer);

}

});

});

//開啟定時器

dispatch_resume(self.timer);

}

1、dispatch_source_set_event_handler()中的任務(wù)實在子線程中執(zhí)行的胧瓜,若需要回到主線程矢棚,要調(diào)用dispatch_async(dispatch_get_main_queue(), ^{}。

2府喳、dispatch_source_set_timer中第二個參數(shù)蒲肋,當(dāng)我們使用dispatch_time或者DISPATCH_TIME_NOW時,系統(tǒng)會使用默認時鐘來進行計時钝满。然而當(dāng)系統(tǒng)休眠的時候兜粘,默認時鐘是不走的,也就會導(dǎo)致計時器停止弯蚜。使用dispatch_walltime可以讓計時器按照真實時間間隔進行計時孔轴。

3、第三個參數(shù)碎捺,1.0 * NSEC_PER_SEC為每秒執(zhí)行一次路鹰,對應(yīng)的還有毫秒,分秒收厨,納秒可以選擇晋柱。

①、dispatch_source_set_event_handler這個函數(shù)在執(zhí)行完之后诵叁,block 會立馬執(zhí)行一遍雁竞,后面隔一定時間間隔再執(zhí)行一次。而NSTimer第一次執(zhí)行是到計時器觸發(fā)之后拧额。這也是和NSTimer之間的一個顯著區(qū)別碑诉。

②、掛起(暫停)定時器,dispatch_suspend之后的Timer势腮,不能被釋放的,會引起崩潰.

③联贩、創(chuàng)建的timer一定要有dispatch_suspend(_timer)或dispatch_source_cancel(_timer)這兩句話來指定出口,否則定時器將不執(zhí)行捎拯,若我們想無限循環(huán)可將dispatch_source_cancel(_timer)寫在一句永不執(zhí)行的if判斷語句中泪幌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市署照,隨后出現(xiàn)的幾起案子祸泪,更是在濱河造成了極大的恐慌,老刑警劉巖建芙,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件没隘,死亡現(xiàn)場離奇詭異,居然都是意外死亡禁荸,警方通過查閱死者的電腦和手機右蒲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門阀湿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瑰妄,你說我怎么就攤上這事陷嘴。” “怎么了间坐?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵灾挨,是天一觀的道長。 經(jīng)常有香客問我竹宋,道長劳澄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任蜈七,我火速辦了婚禮秒拔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宪潮。我一直安慰自己溯警,他們只是感情好趣苏,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布狡相。 她就那樣靜靜地躺著,像睡著了一般食磕。 火紅的嫁衣襯著肌膚如雪尽棕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天彬伦,我揣著相機與錄音滔悉,去河邊找鬼。 笑死单绑,一個胖子當(dāng)著我的面吹牛回官,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搂橙,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼歉提,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了区转?” 一聲冷哼從身側(cè)響起苔巨,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎废离,沒想到半個月后侄泽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡蜻韭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年悼尾,在試婚紗的時候發(fā)現(xiàn)自己被綠了柿扣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡闺魏,死狀恐怖窄刘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舷胜,我是刑警寧澤娩践,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站烹骨,受9級特大地震影響翻伺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沮焕,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一吨岭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峦树,春花似錦辣辫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谷遂,卻和暖如春葬馋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肾扰。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工畴嘶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人集晚。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓窗悯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親偷拔。 傳聞我的和親對象是個殘疾皇子蒋院,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

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

  • /** 定時器(這里不用帶*,因為dispatch_source_t就是個類条摸,內(nèi)部已經(jīng)包含了*) */ @prop...
    CocoaJason閱讀 760評論 0 0
  • GCD定時器不受RunLoop影響悦污,比NSTimer更精確 //獲得隊列 //dispatch_queue_t q...
    rlqs閱讀 385評論 0 0
  • 提到定時器,NStimer肯定是我們最為熟悉的钉蒲。 但是NStimer有著很大的缺點切端,并不準確。 通俗點說顷啼,就是它該...
    mengyingguo閱讀 379評論 0 0
  • //獲得隊列 dispatch_queue_t queue = dispatch_get_global_queue...
    HsuKit閱讀 200評論 0 0
  • #import"ViewController.h" NSInteger count=0; @interfaceVi...
    清蘂翅膀的技術(shù)閱讀 801評論 0 0