GCD定時(shí)器

使用NSTimer定時(shí)器有幾個(gè)缺點(diǎn),
1.分線程需要自動(dòng)管理RunLoop,
2.精確度不太高。
而使用GCD定時(shí)器是沒(méi)有這些缺點(diǎn)的。代碼如下:

    @interface ViewController ()

    @property (nonatomic,strong) dispatch_source_t timer;

    @end

    @implementation ViewController

    - (void)viewDidLoad {
        [super viewDidLoad];
        //創(chuàng)建一個(gè)隊(duì)列
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        //dispatch_source_t 本質(zhì)上是一個(gè)oc對(duì)象!!
        self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
        //GCD的時(shí)間參數(shù)
        dispatch_time_t start = DISPATCH_TIME_NOW;
        dispatch_time_t interval = 1 * NSEC_PER_SEC;
        dispatch_source_set_timer(self.timer, start, interval, 0);
        
        //設(shè)置定時(shí)器的回調(diào)
        dispatch_source_set_event_handler(self.timer, ^{
            
            NSLog(@"----%d",[NSThread isMainThread]);
            
        });
        
        //啟動(dòng)定時(shí)器
        dispatch_resume(self.timer);
    }    

打印的結(jié)果:
2017-06-13 21:55:34.777 GCDTimer[6623:2965563] ----0
說(shuō)明該定時(shí)器是創(chuàng)建在分線程上了,銷毀定時(shí)器可以調(diào)用

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容