dispatch_source_create建立定時器和UIWindow建立相似處

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

相關文章
相關標籤/搜索