GCD定時器
- GCD定時器不受RunLoop的影響,調用頻率比較固定
// 聲明dispatch_source_t屬性
@property (nonatomic, strong) dispatch_source_t timer;
// 獲得隊列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
// 創建一個定時器
self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
// 設置定時器的各種屬性(幾時開始任務,每隔多長時間執行一次)
// GCD的時間參數,一般是納秒(1秒 == 10的9次方納秒)
// 何時開始執行第一個任務
// dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC) 比當前時間晚1秒
// 每隔多長時間執行一次interval:(uint64_t)(1.0 * NSEC_PER_SEC); 間隔1秒
dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC));
uint64_t interval = (uint64_t)(1.0 * NSEC_PER_SEC);
dispatch_source_set_timer(self.timer, start, interval, 0);
// 設置回調
dispatch_source_set_event_handler(self.timer, ^{
// 設置需要處理的事情
});
// 啟動定時器
dispatch_resume(self.timer);
// 取消定時器
dispatch_cancel(self.timer);
self.timer = nil;
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。