GCD 定時器 時隔多長時間 執(zhí)行一次任務

@property (nonatomic, strong) dispatch_source_t Timer;
//  加載完成里面創(chuàng)建
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"充電中";
//每隔30秒請求一次數據
[self RefreshData];
}
//  銷毀定時器
- (void)viewDidDisappear:(BOOL)animated{

[super viewDidDisappear:animated];

// 取消定時器

if (self.Timer) {

dispatch_cancel(self.Timer);

self.Timer = nil;

}

}

- (void)RefreshData

{

// 獲得隊列

dispatch_queue_t queue = dispatch_get_main_queue();

// 創(chuàng)建一個定時器(dispatch_source_t本質還是個OC對象)

self.Timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);

// 設置定時器的各種屬性(幾時開始任務,每隔多長時間執(zhí)行一次)

// GCD的時間參數,一般是納秒(1秒 == 10的9次方納秒)

// 何時開始執(zhí)行第一個任務

// dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC) 比當前時間晚1秒

dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(30.0 * NSEC_PER_SEC));

uint64_t interval = (uint64_t)(30.0 * NSEC_PER_SEC);// 間嗝30秒

dispatch_source_set_timer(self.Timer, start, interval, 0);

// 設置回調

dispatch_source_set_event_handler(self.Timer, ^{

[self queryListOfChargingInformationChargeSeq:self.chargeSeq];

});

// 啟動定時器

dispatch_resume(self.Timer);

}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容