日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

iOS中幾種定時(shí)器的實(shí)現(xiàn)小結(jié)

瀏覽:2日期:2022-09-17 08:14:26

在軟件開(kāi)發(fā)過(guò)程中,我們常常需要在某個(gè)時(shí)間后執(zhí)行某個(gè)方法,或者是按照某個(gè)周期一直執(zhí)行某個(gè)方法。在這個(gè)時(shí)候,我們就需要用到定時(shí)器。

然而,在iOS中有很多方法完成以上的任務(wù),到底有多少種方法呢?經(jīng)過(guò)查閱資料,大概有三種方法:NSTimer、CADisplayLink、GCD。接下來(lái)我就一一介紹它們的用法。

一、NSTimer

1. 創(chuàng)建方法

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:NO]; TimerInterval : 執(zhí)行之前等待的時(shí)間。比如設(shè)置成1.0,就代表1秒后執(zhí)行方法 target : 需要執(zhí)行方法的對(duì)象。 selector : 需要執(zhí)行的方法 repeats : 是否需要循環(huán)

2. 釋放方法

[timer invalidate];

注意 :調(diào)用創(chuàng)建方法后,target對(duì)象的計(jì)數(shù)器會(huì)加1,直到執(zhí)行完畢,自動(dòng)減1。如果是循環(huán)執(zhí)行的話,就必須手動(dòng)關(guān)閉,否則可以不執(zhí)行釋放方法。

3. 特性

存在延遲不 管是一次性的還是周期性的timer的實(shí)際觸發(fā)事件的時(shí)間,都會(huì)與所加入的RunLoop和RunLoop Mode有關(guān),如果此RunLoop正在執(zhí)行一個(gè)連續(xù)性的運(yùn)算,timer就會(huì)被延時(shí)出發(fā)。重復(fù)性的timer遇到這種情況,如果延遲超過(guò)了一個(gè)周期,則 會(huì)在延時(shí)結(jié)束后立刻執(zhí)行,并按照之前指定的周期繼續(xù)執(zhí)行。

必須加入Runloop使用上面的創(chuàng)建方式,會(huì)自動(dòng)把timer加入MainRunloop的NSDefaultRunLoopMode中。如果使用以下方式創(chuàng)建定時(shí)器,就必須手動(dòng)加入Runloop:

NSTimer *timer = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];二、CADisplayLink

1. 創(chuàng)建方法

self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)]; [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

2. 停止方法

[self.displayLink invalidate]; self.displayLink = nil;

**當(dāng)把CADisplayLink對(duì)象add到runloop中后,selector就能被周期性調(diào)用,類(lèi)似于重復(fù)的NSTimer被啟動(dòng)了;執(zhí)行invalidate操作時(shí),CADisplayLink對(duì)象就會(huì)從runloop中移除,selector調(diào)用也隨即停止,類(lèi)似于NSTimer的invalidate方法。**

3. 特性

屏幕刷新時(shí)調(diào)用 CADisplayLink 是一個(gè)能讓我們以和屏幕刷新率同步的頻率將特定的內(nèi)容畫(huà)到屏幕上的定時(shí)器類(lèi)。CADisplayLink以特定模式注冊(cè)到runloop后,每當(dāng)屏幕顯示 內(nèi)容刷新結(jié)束的時(shí)候,runloop就會(huì)向CADisplayLink指定的target發(fā)送一次指定的selector消息, CADisplayLink類(lèi)對(duì)應(yīng)的selector就會(huì)被調(diào)用一次。所以通常情況下,按照iOS設(shè)備屏幕的刷新率60次/秒

延遲

iOS設(shè)備的屏幕刷新頻率是固定的,CADisplayLink在正常情況下會(huì)在每次刷新結(jié)束都被調(diào)用,精確度相當(dāng)高。但如果調(diào)用的方法比較耗時(shí),超過(guò)了屏幕刷新周期,就會(huì)導(dǎo)致跳過(guò)若干次回調(diào)調(diào)用機(jī)會(huì)。 如果CPU過(guò)于繁忙,無(wú)法保證屏幕60次/秒的刷新率,就會(huì)導(dǎo)致跳過(guò)若干次調(diào)用回調(diào)方法的機(jī)會(huì),跳過(guò)次數(shù)取決CPU的忙碌程度。

使用場(chǎng)景 從原理上可以看出,CADisplayLink適合做界面的不停重繪,比如視頻播放的時(shí)候需要不停地獲取下一幀用于界面渲染。

4. 重要屬性

frameInterval NSInteger類(lèi)型的值,用來(lái)設(shè)置間隔多少幀調(diào)用一次selector方法,默認(rèn)值是1,即每幀都調(diào)用一次。 duration readOnly 的CFTimeInterval值,表示兩次屏幕刷新之間的時(shí)間間隔。需要注意的是,該屬性在target的selector被首次調(diào)用以后才會(huì)被賦值。 selector的調(diào)用間隔時(shí)間計(jì)算方式是:調(diào)用間隔時(shí)間 = duration × frameInterval。三、GCD方式

執(zhí)行一次

double delayInSeconds = 2.0;dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ //執(zhí)行事件});

重復(fù)執(zhí)行

NSTimeInterval period = 1.0; //設(shè)置時(shí)間間隔dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), period * NSEC_PER_SEC, 0); //每秒執(zhí)行dispatch_source_set_event_handler(_timer, ^{ //在這里執(zhí)行事件});dispatch_resume(_timer);

GCD的方式,我在網(wǎng)上只能找到這些資料,目前自己還在學(xué)習(xí)中,以后會(huì)更新

到此這篇關(guān)于iOS中幾種定時(shí)器的實(shí)現(xiàn)小結(jié)的文章就介紹到這了,更多相關(guān)iOS 定時(shí)器內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: IOS
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
在线成人直播| 欧美精品中文字幕亚洲专区| 欧美黄页在线免费观看| 欧美三级第一页| 国产亚洲精品美女久久| 国产精品手机在线播放| 国产精品18| 九九九精品视频| 麻豆91在线播放| 91日韩欧美| 成人自拍av| 在线观看免费一区二区| 欧美综合二区| 日韩精品电影一区亚洲| 中文无码日韩欧| 日韩高清在线观看一区二区| 日本午夜精品久久久| 国产精品v一区二区三区| 久久精品一区| 国产精品久久久久av电视剧| 99精品在线观看| 鲁大师影院一区二区三区| 中文字幕亚洲在线观看| 国产精品片aa在线观看| 日韩欧美自拍| 日韩影院精彩在线| 日本成人在线视频网站| 精品99在线| 久久久亚洲一区| 欧美精品一线| 日韩精品高清不卡| 日本精品黄色| japanese国产精品| 婷婷精品在线观看| 久久免费视频66| 国产尤物精品| 日韩免费精品| 精品视频网站| 夜夜嗨一区二区| 国产日本精品| 99久久精品费精品国产| 亚洲精一区二区三区| 激情久久99| 国产精品视区| 国产乱码精品一区二区亚洲| 极品av在线| 久久先锋影音| 久久99久久人婷婷精品综合| 国产综合激情| 久久精品99久久久| 国产99久久久国产精品成人免费| 婷婷精品在线| 成人日韩在线观看| 日韩精品午夜视频| 日韩一区自拍| 久久精品99国产精品日本| 久久亚洲国产| 国产精品久久久久77777丨| 激情五月综合| 91免费精品国偷自产在线在线| 欧美日韩在线观看首页| 亚洲精品美女91| 日韩高清中文字幕一区二区| 日本h片久久| 久久亚洲国产| 国产精品亚洲一区二区在线观看| 波多野结衣一区| 国产福利一区二区精品秒拍| 好看不卡的中文字幕| 精品三级在线| 亚洲ww精品| 99久久99久久精品国产片果冰| 国产日产精品一区二区三区四区的观看方式| 亚洲福利国产| 久久精品伊人| 日韩三级精品| 欧美精品一二| 高清在线一区| 日韩va亚洲va欧美va久久| 国产一区亚洲| av中文资源在线资源免费观看| 清纯唯美亚洲综合一区| 午夜免费一区| 日韩国产欧美一区二区| 国产欧美日韩视频在线| 日韩中文字幕亚洲一区二区va在线 | 国产乱人伦精品一区| 伊人久久大香线蕉av不卡| 国产精品久久久免费| 午夜久久av| 99国产精品久久久久久久成人热| 97精品中文字幕| 欧美啪啪一区| 亚洲精品系列| 久久亚洲欧洲| 亚洲黄页一区| 欧美99久久| 久久九九精品| 日韩久久一区二区三区| 久久香蕉网站| 国产精品白丝av嫩草影院| 日韩av电影一区| 石原莉奈在线亚洲二区| 亚洲高清影视| 国内亚洲精品| 999精品一区| 色黄视频在线观看| 国产不卡精品在线| 久久精品国产精品亚洲毛片| 欧美永久精品| 日本天堂一区| 久久国产麻豆精品| 久久精品999| 91精品国产自产精品男人的天堂| 亚洲欧洲美洲国产香蕉| 香蕉精品999视频一区二区| 影院欧美亚洲| 欧洲激情综合| 黄色日韩精品| 欧美综合国产| 亚洲精品日韩久久| 日韩国产在线不卡视频| 欧美日韩亚洲一区在线观看| 国产精品白浆| 高清在线一区| 亚洲不卡av不卡一区二区| 精品免费av在线| av一区二区高清| 丝袜美腿一区二区三区| 亚洲综合婷婷| 国产日韩一区二区三免费高清| 国产精品一区二区三区av| 国产精品jk白丝蜜臀av小说| 欧美激情视频一区二区三区免费 | 久久国产欧美| 欧美午夜精彩| 欧美日韩视频一区二区三区| 久久国产高清| 日韩av中文字幕一区二区| 国产精品麻豆成人av电影艾秋| 国产美女精品视频免费播放软件| 国产精品久久久久久久免费软件| 精品少妇av| 亚洲第一区色| 日韩精品一二三四| 日韩av中文字幕一区| 国产精品mv在线观看| 成人精品视频| 国产韩日影视精品| 综合激情网...| 美腿丝袜亚洲三区| 日韩三区在线| 中文字幕日韩高清在线| 国产日产一区| 日韩中文影院| 欧美日韩四区| 91成人在线精品视频| 精品久久视频| 欧美va天堂| 日韩精品一级| 新版的欧美在线视频| 老司机精品久久| 欧美经典一区| 激情综合网五月| 久久国产三级| 久久高清精品| 日本aⅴ免费视频一区二区三区| 91视频精品| 久久福利影视| 欧美精品导航| 日韩深夜视频| 一区二区三区网站| 九九九精品视频| 亚洲激情国产| 久久99久久久精品欧美| 免费视频一区三区| 国产日韩一区二区三区在线| 国产va在线视频| 亚洲深深色噜噜狠狠爱网站| 成人午夜亚洲| 美国三级日本三级久久99| 美女性感视频久久| 国产亚洲综合精品| 精品一区二区三区中文字幕视频 | 亚洲欧美日韩国产一区| 国产乱码精品| 久久国产精品毛片| 97精品视频在线看| 亚洲最新av| 伊人久久在线| 91p九色成人| 欧美女激情福利| 国产成人精选| 日韩激情一区二区| 欧美亚洲在线日韩| 麻豆国产精品视频| 蜜桃av一区二区三区电影| 麻豆视频在线看| 日韩中出av| 欧美.日韩.国产.一区.二区 |