iOS中的計時器

2021-07-22 11:44:52 字數 2787 閱讀 2046

ios中定時器有三種,分別是nstimer、cadisplaylink、dispatch_source,下面就分別對這三種計時器進行說明

一、nstimer

建立方法

1

nstimer *timer = [nstimer scheduledtimerwithtimeinterval:1.0 target:self selector:@selector(action:) userinfo:nil repeats:no];

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

target: 需要執行方法的物件。

selector: 需要執行的方法

repeats: 是否需要迴圈

釋放方法

1

2

[timer invalidate];

timer = nil;

注意 :

呼叫建立方法後,target物件的計數器會加1,直到執行完畢,自動減1。如果是迴圈執行的話,就必須手動關閉,否則可以不執行釋放方法。

特性二、cadisplaylink

建立方法

1

2

self.displaylink = [cadisplaylink displaylinkwithtarget:self selector:@selector(handledisplaylink:)];

[self.displaylink addtorunloop:[nsrunloop currentrunloop] formode:nsdefaultrunloopmode];

停止方法

1

2

[self.displaylink invalidate];

self.displaylink = nil;

當把cadisplaylink物件addrunloop中後,selector就能被週期性呼叫,類似於重複的nstimer被啟動了;執行invalidate操作時,cadisplaylink物件就會從runloop中移除,selector呼叫也隨即停止,類似於nstimerinvalidate方法。

特性重要屬性

三、dispatch_source

建立方法

1

2

3

4

//需要將dispatch_source_t timer設定為成員變數,不然會立即釋放@property (nonatomic, strong) dispatch_source_t timer;//定時器開始執行的延時時間nstimeinterval delaytime = 3.0f;//定時器間隔時間nstimeinterval timeinterval = 3.0f;

//建立子執行緒佇列dispatch_queue_t queue = dispatch_get_global_queue(dispatch_queue_priority_default, 0);//使用之前建立的佇列來建立計時器_timer = dispatch_source_create(dispatch_source_type_timer, 0, 0, queue);//設定延時執行時間,delaytime為要延時的秒數dispatch_time_t startdelaytime = dispatch_time(dispatch_time_now, (int64_t)(delaytime * nsec_per_sec));//設定計時器dispatch_source_set_timer(_timer, startdelaytime, timeinterval * nsec_per_sec, 0.1 * nsec_per_sec);

dispatch_source_set_event_handler(_timer, ^);// 啟動計時器dispatch_resume(_timer);

停止方法

1

dispatch_source_cancel(_timer);

特性重要屬性

1

2

3

4

dispatch_source_set_timer(dispatch_source_t source,

dispatch_time_t start,

uint64_t interval,

uint64_t leeway);

優點:注意事項:

需要將dispatch_source_t timer設定為成員變數,不然會立即釋放

文章** 

python計時器 python 計時器

import sysclassshowtime qwidget def init self super init self.istimestart false 標記時間是否開始計時 self.setwindowtitle qlable 顯示計時時間 self.lable time val qlabe...

TCP中的計時器

tcp共使用以下四種計時器 重傳計時器 堅持計時器 保活計時器和時間等待計時器 這幾個計時器的主要特點如下 重傳計時器 retransmission timer 當tcp傳送報文段時,就建立該特定報文段的重傳計時器。可能發生兩種情況 1.若在計時器截止時間到之前收到了對此特定報文段的確認,則撤銷此計...

JS中的計時器

js計時器中this指標指向window 函式名 time 多長時間執行一次 value 傳入引數 1.1建立計時器 可以不用變數接收方法一 var timer setinterval function 1000 方法二 var timer function setinterval timer,10...