CADisplayLink 和 NSTimer

一钙姊、NSTimer

OC中的計(jì)時(shí)器(時(shí)鐘),可每隔一段時(shí)間執(zhí)行一次。

1.初始化

 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

(NSTimeInterval)ti : 時(shí)間間隔边灭,每隔多少秒執(zhí)行一次
target:(id)aTarget : 任務(wù)執(zhí)行對(duì)象,即任務(wù)交給誰來執(zhí)行
selector:(SEL)aSelector : 方法選擇器健盒,任務(wù)執(zhí)行的方法或事件
userInfo:(id)userInfo : 可以為nil绒瘦,當(dāng)定時(shí)器失效時(shí),由你指定的對(duì)象保留和釋放該定時(shí)器扣癣。
repeats:(BOOL)yesOrNo : 當(dāng)YES時(shí)惰帽,定時(shí)器會(huì)不斷循環(huán)直至失效或被釋放,當(dāng)NO時(shí)父虑,定時(shí)器會(huì)循環(huán)發(fā)送一次就失效该酗。

使用上面第一個(gè)類方法創(chuàng)建的定時(shí)器,需要手動(dòng)將定時(shí)器添加到runLoop中士嚎,使用上面第二個(gè)類方法創(chuàng)建的定時(shí)器呜魄,系統(tǒng)會(huì)自動(dòng)將其添加到 runLoop 中。

NSTimer * timer1 = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timeFired:) userInfo:nil repeats:YES];
NSTimer * timer2 = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timeFired:) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:timer2 forMode:NSDefaultRunLoopMode];

2.啟動(dòng)

當(dāng)NSTimer創(chuàng)建完后莱衩,在經(jīng)過初始化時(shí)指定的timeInterval秒后自動(dòng)觸發(fā)爵嗅。

3.立即觸發(fā)

使用-(void)fire;方法來立即觸發(fā)該定時(shí)器
若在重復(fù)執(zhí)行的定時(shí)器中調(diào)用此方法后立即觸發(fā)該定時(shí)器,且不會(huì)中斷之前的執(zhí)行計(jì)劃笨蚁;
若在不重復(fù)執(zhí)行的定時(shí)器中調(diào)用此方法睹晒,立即觸發(fā)后,就會(huì)使這個(gè)定時(shí)器失效括细。

[timer fire];

4.暫停

給定時(shí)器設(shè)置一個(gè)未來無法到達(dá)的時(shí)間點(diǎn) distantFuture伪很,定時(shí)器就會(huì)一直等待不再觸發(fā)了,也就是暫停了奋单。

-(void)pauseTimer{
     [timer setFireDate:[NSDate distantFuture]];
}

5.恢復(fù)(繼續(xù))

把定時(shí)器觸發(fā)時(shí)間設(shè)置為當(dāng)前時(shí)刻锉试,定時(shí)器就繼續(xù)執(zhí)行了。

 -(void)resumeTimer{
     [timer setFireDate:[NSDate date]];
}

6.停止

使用- (void)invalidate;方法來將定時(shí)器從runloop中移出辱匿,從而定時(shí)器停止键痛。

[timer invalidate];

二炫彩、CADisplayLink

CADisplayLink默認(rèn)重復(fù)執(zhí)行,每秒運(yùn)行60次絮短,frameInterval值為1江兢,通過它的frameInterval屬性改變每秒運(yùn)行幀數(shù),如設(shè)置為2丁频,意味著CADisplayLink每隔一幀運(yùn)行一次杉允,有效的邏輯每秒運(yùn)行30次。一般用于逐幀動(dòng)畫中席里。

1.初始化

 + (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel;

2.啟動(dòng)

初始化后叔磷,要將其添加到 runLoop 中才能執(zhí)行。
- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSString *)mode //添加到runLoop
- (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSString *)mode //從runLoop中移除

CADisplayLink * link = [CADisplayLink displayLinkWithTarget:self selector:@selector(timeFired:)];
[link addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

3.暫停和繼續(xù)

設(shè)置 paused 屬性值為YES奖磁,則暫停執(zhí)行改基;設(shè)置 paused 屬性值為NO,則繼續(xù)執(zhí)行咖为。

[link setPaused:YES];
[link setPaused:NO];

4.停止(失效)

使用- (void)invalidate;方法秕狰,將其從runLoop中移除,并釋放其引用的目標(biāo)對(duì)象躁染。

[link invalidate];
link = nil;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸣哀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吞彤,更是在濱河造成了極大的恐慌我衬,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饰恕,死亡現(xiàn)場離奇詭異挠羔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)懂盐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門褥赊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糕档,“玉大人莉恼,你說我怎么就攤上這事∷倌牵” “怎么了俐银?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長端仰。 經(jīng)常有香客問我捶惜,道長,這世上最難降的妖魔是什么荔烧? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任吱七,我火速辦了婚禮汽久,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘踊餐。我一直安慰自己景醇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布吝岭。 她就那樣靜靜地躺著三痰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窜管。 梳的紋絲不亂的頭發(fā)上散劫,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音幕帆,去河邊找鬼获搏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛失乾,可吹牛的內(nèi)容都是我干的颜凯。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼仗扬,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼症概!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起早芭,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤彼城,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后退个,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體募壕,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年语盈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舱馅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刀荒,死狀恐怖代嗤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缠借,我是刑警寧澤干毅,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站泼返,受9級(jí)特大地震影響硝逢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一渠鸽、第九天 我趴在偏房一處隱蔽的房頂上張望叫乌。 院中可真熱鬧,春花似錦徽缚、人聲如沸综芥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膀藐。三九已至,卻和暖如春红省,著一層夾襖步出監(jiān)牢的瞬間额各,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國打工吧恃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虾啦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓痕寓,卻偏偏與公主長得像傲醉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呻率,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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