亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發定時器的三種方法分享

2020-07-26 03:11:55
字體:
來源:轉載
供稿:網友

前言

在開發中,很多時候我們需要用到定時器實時刷新某個數值。這個時候我們就需要用到定時器,這里,我為大家推薦三種方法,分別是:NSTimer、CADisplayLink、GCD。接下來我就一一介紹它們的用法。希望能幫到大家。

一、NSTimer(一般用于定時的更新一些非界面上的數據)

1. 創建方法

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:NO];

     TimerInterval : 執行之前等待的時間。比如設置成1.0,就代表1秒后執行方法

     target : 需要執行方法的對象。

     selector : 需要執行的方法

     repeats : 是否需要循環

2. 釋放方法

[timer invalidate]; 

注意 :

調用創建方法后,target對象的計數器會加1,直到執行完畢,自動減1。如果是循環執行的話,就必須手動關閉,否則可以不執行釋放方法。

3. 特性

存在延遲

不管是一次性的還是周期性的timer的實際觸發事件的時間,都會與所加入的RunLoopRunLoop Mode有關,如果此RunLoop正在執行一個連續性的運算,timer就會被延時出發。重復性的timer遇到這種情況,如果延遲超過了一個周期,則會在延時結束后立刻執行,并按照之前指定的周期繼續執行。

必須加入Runloop

使用上面的創建方式,會自動把timer加入MainRunloopNSDefaultRunLoopMode中。如果使用以下方式創建定時器,就必須手動加入Runloop:

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

二、CADisplayLink

1. 創建方法

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

 

2. 停止方法

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

當把CADisplayLink對象add到runloop中后,selector就能被周期性調用,類似于重復的NSTimer被啟動了;執行invalidate操作時,CADisplayLink對象就會從runloop中移除,selector調用也隨即停止,類似于NSTimer的invalidate方法。 

3. 特性

屏幕刷新時調用

CADisplayLink是一個能讓我們以和屏幕刷新率同步的頻率將特定的內容畫到屏幕上的定時器類。CADisplayLink以特定模式注冊到runloop后,每當屏幕顯示內容刷新結束的時候,runloop就會向CADisplayLink指定的target發送一次指定的selector消息, CADisplayLink類對應的selector就會被調用一次。所以通常情況下,按照iOS設備屏幕的刷新率60次/秒

延遲

iOS設備的屏幕刷新頻率是固定的,CADisplayLink在正常情況下會在每次刷新結束都被調用,精確度相當高。但如果調用的方法比較耗時,超過了屏幕刷新周期,就會導致跳過若干次回調調用機會。

如果CPU過于繁忙,無法保證屏幕60次/秒的刷新率,就會導致跳過若干次調用回調方法的機會,跳過次數取決CPU的忙碌程度。

使用場景

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

4. 重要屬性

frameInterval

NSInteger類型的值,用來設置間隔多少幀調用一次selector方法,默認值是1,即每幀都調用一次。

duration

readOnlyCFTimeInterval值,表示兩次屏幕刷新之間的時間間隔。需要注意的是,該屬性在targetselector被首次調用以后才會被賦值。selector的調用間隔時間計算方式是:調用間隔時間 = duration × frameInterval。

三、GCD方式

執行一次

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){   //執行事件});

重復執行

NSTimeInterval period = 1.0; //設置時間間隔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); //每秒執行dispatch_source_set_event_handler(_timer, ^{  //在這里執行事件});dispatch_resume(_timer);

總結

GCD的方式,我在網上只能找到這些資料,目前自己還在學習中,以后會更新,以上就是iOS開發定時器的三種方式,希望本文能對各位iOS開發者們有所幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩美女视频在线观看| 成人免费观看a| 51精品国产黑色丝袜高跟鞋| 国产mv免费观看入口亚洲| 国产一区二区三区四区福利| 亚洲黄色www| 色av中文字幕一区| 色综合男人天堂| 成人在线观看视频网站| 92看片淫黄大片看国产片| 国产在线98福利播放视频| 91九色单男在线观看| 久久这里有精品视频| 亚洲国产成人精品久久久国产成人一区| 中文字幕久久久| 神马久久久久久| 国产成人avxxxxx在线看| 中文字幕在线看视频国产欧美| 波霸ol色综合久久| 亚洲精品视频播放| 日韩禁在线播放| 国产在线观看精品| 色噜噜狠狠狠综合曰曰曰88av| 日韩中文字幕精品| 国产一区二区三区网站| 国产精品成人在线| 一本一本久久a久久精品牛牛影视| 久久亚洲精品中文字幕冲田杏梨| 亚洲精品一区中文字幕乱码| 91精品国产沙发| 亚洲欧美日韩直播| 亚洲人成电影在线播放| 国产91精品久| 尤物tv国产一区| 久久久久久久久久国产精品| 成人看片人aa| 国产精品美腿一区在线看| 亚洲成av人片在线观看香蕉| 亚洲视频在线观看网站| 久热精品视频在线观看| 国产午夜精品视频免费不卡69堂| 成人黄色av网| 国产不卡av在线| 黄色一区二区在线观看| 国产精品视频成人| 久久成人精品一区二区三区| 国产视频精品一区二区三区| 91久久久久久久久| 国产亚洲视频在线观看| 欧美华人在线视频| 伊人成人开心激情综合网| 亚洲人成电影网站色…| 精品国产乱码久久久久久婷婷| 一区二区成人精品| 精品视频在线播放色网色视频| 久久午夜a级毛片| 日韩av在线电影网| 国产精品美女在线观看| 亚洲欧美色图片| 色妞在线综合亚洲欧美| 国产精品福利网| 色综合影院在线| 懂色av一区二区三区| 奇米一区二区三区四区久久| 亚洲欧美另类自拍| 亚洲欧美中文字幕在线一区| 国内精品视频久久| 蜜臀久久99精品久久久久久宅男| 在线日韩欧美视频| 日韩av在线免费播放| 亚洲成人久久一区| 91高清免费在线观看| 国产亚洲欧美一区| 国产精品福利网| 91亚洲精品久久久| 日本精品视频在线观看| 精品久久久中文| 久久夜精品香蕉| 久久大大胆人体| 91网在线免费观看| www.亚洲成人| 这里只有精品在线观看| 91国内在线视频| 日韩欧美精品在线观看| 成人美女av在线直播| 欧美激情乱人伦| 亚洲3p在线观看| 97色在线播放视频| 国内精久久久久久久久久人| 亚洲综合在线做性| 亚洲自拍高清视频网站| 久久伊人91精品综合网站| 国产一区二区三区网站| 97**国产露脸精品国产| 欧美中文在线视频| 久久久久久久影院| 欧美丝袜美女中出在线| 亚洲福利在线视频| 国产成人精品在线视频| 中文字幕精品在线视频| 国产91精品久久久| 另类视频在线观看| 国产精品久久久久久久久久尿| 超碰日本道色综合久久综合| 日日摸夜夜添一区| 久久天天躁狠狠躁夜夜爽蜜月| 伊人激情综合网| 国产精品爽黄69| 精品一区电影国产| 久久青草精品视频免费观看| 欧美成人黑人xx视频免费观看| 俺去了亚洲欧美日韩| 亚洲欧洲国产精品| 国产suv精品一区二区三区88区| 国模私拍一区二区三区| 中文字幕日韩欧美在线视频| 日本高清久久天堂| 亚洲国产黄色片| 日韩欧美一区二区三区| 日韩美女视频在线观看| 成人两性免费视频| 久久99久久99精品中文字幕| 中日韩美女免费视频网址在线观看| 操日韩av在线电影| 亚洲最大福利网| 91国产视频在线| 久久久国产一区二区| 欧美亚洲国产成人精品| 在线观看中文字幕亚洲| 日韩电影中文 亚洲精品乱码| 精品久久久久久中文字幕大豆网| 国产精品∨欧美精品v日韩精品| 91精品国产综合久久香蕉922| 国产精品爽爽爽爽爽爽在线观看| 韩日欧美一区二区| 国产欧美va欧美va香蕉在线| 欧美日韩一区二区在线| 国产精品日韩久久久久| 成人性教育视频在线观看| 国产精品久久久久久av下载红粉| 国产mv久久久| 亚洲综合第一页| 国产91ⅴ在线精品免费观看| 亚洲天堂男人天堂女人天堂| 国产精品久久婷婷六月丁香| 欧美日韩国产999| 亚洲美女免费精品视频在线观看| 欧美中文在线观看国产| 欧美色另类天堂2015| 亚洲视频自拍偷拍| 国产精品美女主播在线观看纯欲| 国产不卡一区二区在线播放| 日韩中文综合网| 综合国产在线观看| 国产精品专区第二| 日韩欧美在线免费观看| 欧美日韩爱爱视频| 久久精品国产精品亚洲| 国产一区二区精品丝袜| 国产精品久久久久999| 欧美中在线观看| 美女国内精品自产拍在线播放| 亚洲高清在线观看| 亚洲欧美制服丝袜|