dispatch_source_create建立定時器異步
//定時器
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// 建立定時器,自己也是個oc對象,必須設置爲全局,否則已建立就銷燬了,因此要保存下來
_progressTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
//控制計時器第一次觸發的時刻,延遲0s
dispatch_time_t strat = dispatch_time(DISPATCH_TIME_NOW, 0 * NSEC_PER_SEC);
//每隔多長時間執行一次
dispatch_source_set_timer(_progressTimer, strat, 0.1 * NSEC_PER_SEC, 0);
dispatch_source_set_event_handler(_progressTimer, ^{
// do something
});
dispatch_resume(_progressTimer); //定時器啓動spa
dispatch_suspend(_progressTimer); //定時器掛起,暫停對象
dispatch_source_cancel(_progressTimer); //定時器異步取消get
dispatch_cancel(_progressTimer); //定時器取消event
//建立的定時器要保存起來,設爲全局變量,否則已建立就銷燬了,因此要保存下來和UIWidow同樣,建立都要設爲全局變量否則再次使用的時候已經銷燬了,沒法使用變量
還有須要注意的,就是定時器取消以後,又或者定時器沒有建立的時候,對定時器操做的話會崩潰定時器
還有就是定時器掛起狀態也不能操做定時器也會崩潰queue