CADisplayLink與NSTimer不同點(diǎn)

CADispalyLink相關(guān)方法:

/* Create a new display link object for the main display. It will
 * invoke the method called 'sel' on 'target', the method has the
 * signature '(void)selector:(CADisplayLink *)sender'. */

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

/* Adds the receiver to the given run-loop and mode. Unless paused, it
 * will fire every vsync until removed. Each object may only be added
 * to a single run-loop, but it may be added in multiple modes at once.
 * While added to a run-loop it will implicitly be retained. */

- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;

/* Removes the receiver from the given mode of the runloop. This will
 * implicitly release it when removed from the last mode it has been
 * registered for. */

- (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;

/* Removes the object from all runloop modes (releasing the receiver if
 * it has been implicitly retained) and releases the 'target' object. */

- (void)invalidate;

屬性:


//1/60
@property(readonly, nonatomic) CFTimeInterval duration;

//是否啟動(dòng)组去,YES:暫停;初始值為false
@property(getter=isPaused, nonatomic) BOOL paused;

//標(biāo)識(shí)間隔多少幀調(diào)用一次selector方法欢揖,默認(rèn)值是1岂座,即每幀都調(diào)用一次臂港;屏幕幀率60(1秒刷新屏幕60次)椒涯,如果設(shè)為2,則一秒回調(diào)60/2 = 30次
@property(nonatomic) NSInteger frameInterval
//啟動(dòng)CADisplayLink
CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTriggered)];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
//取消CADisplayLink
[displayLink invalidate]

CADisplayLink 對(duì)象一旦加入 Runloop 中碉就,則會(huì)在屏幕需要刷新時(shí)回調(diào) selector盟广。如果要暫停對(duì) selector 的調(diào)用,可以把 paused 屬性設(shè)置為 YES 來實(shí)現(xiàn)瓮钥。當(dāng)不再使用 CADisplayLink 時(shí)筋量,需要調(diào)用 invalidate 方法從所有的 Runloop 中將其移除。

CADisplaylink 與 NSTimer 非常類似骏庸,都可以以一定的時(shí)間間隔觸發(fā)回調(diào) selector毛甲,不同點(diǎn)在于 CADisplaylink 的時(shí)間間隔是與屏幕的刷新頻率相關(guān)聯(lián)的,這一點(diǎn)決定了 CADisplaylink 的應(yīng)用多與顯示有關(guān)具被。

iOS設(shè)備的刷新頻率事60HZ也就是每秒60次玻募。那么每一次刷新的時(shí)間就是1/60秒 大概16.7毫秒。當(dāng)我們的frameInterval值為1的時(shí)候我們需要保證的是 CADisplayLink調(diào)用的`target`的函數(shù)計(jì)算時(shí)間不應(yīng)該大于 16.7否則就會(huì)出現(xiàn)嚴(yán)重的丟幀現(xiàn)象一姿。

iOS設(shè)備的屏幕刷新頻率是固定的七咧,CADisplayLink在正常情況下會(huì)在每次刷新結(jié)束都被調(diào)用,精確度相當(dāng)高叮叹。NSTimer的精確度就顯得低了點(diǎn)艾栋,比如NSTimer的觸發(fā)時(shí)間到的時(shí)候,runloop如果在阻塞狀態(tài)蛉顽,觸發(fā)時(shí)間就會(huì)推遲到下一個(gè)runloop周期蝗砾。并且 NSTimer新增了tolerance屬性,讓用戶可以設(shè)置可以容忍的觸發(fā)的時(shí)間的延遲范圍携冤。

CADisplayLink使用場合相對(duì)專一悼粮,適合做UI的不停重繪,比如自定義動(dòng)畫引擎或者視頻播放的渲染曾棕。NSTimer的使用范圍要廣泛的多扣猫,各種需要單次或者循環(huán)定時(shí)處理的任務(wù)都可以使用。在UI相關(guān)的動(dòng)畫或者顯示內(nèi)容使用 CADisplayLink比起用NSTimer的好處就是我們不需要在格外關(guān)心屏幕的刷新頻率了翘地,因?yàn)樗旧砭褪歉聊凰⑿峦降摹?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末申尤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衙耕,更是在濱河造成了極大的恐慌昧穿,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橙喘,死亡現(xiàn)場離奇詭異时鸵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渴杆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門寥枝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人磁奖,你說我怎么就攤上這事囊拜。” “怎么了比搭?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵冠跷,是天一觀的道長。 經(jīng)常有香客問我身诺,道長蜜托,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任霉赡,我火速辦了婚禮橄务,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘穴亏。我一直安慰自己蜂挪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布嗓化。 她就那樣靜靜地躺著棠涮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刺覆。 梳的紋絲不亂的頭發(fā)上严肪,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音谦屑,去河邊找鬼驳糯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伦仍,可吹牛的內(nèi)容都是我干的结窘。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼充蓝,長吁一口氣:“原來是場噩夢啊……” “哼隧枫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谓苟,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤官脓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涝焙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卑笨,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年仑撞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赤兴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妖滔。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖桶良,靈堂內(nèi)的尸體忽然破棺而出座舍,到底是詐尸還是另有隱情,我是刑警寧澤陨帆,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布曲秉,位于F島的核電站,受9級(jí)特大地震影響疲牵,放射性物質(zhì)發(fā)生泄漏承二。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一纲爸、第九天 我趴在偏房一處隱蔽的房頂上張望亥鸠。 院中可真熱鬧,春花似錦缩焦、人聲如沸读虏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盖桥。三九已至,卻和暖如春题翻,著一層夾襖步出監(jiān)牢的瞬間揩徊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國打工嵌赠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塑荒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓姜挺,卻偏偏與公主長得像齿税,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子炊豪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

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