當使用GCD
來模擬NSTImer的實現的時候發現dispatch_source_set_timer(_source, dispatch_time_t start, (interval * NSEC_PER_SEC), 0)
設定的source事件被喚醒後不會按照原先設定的開始時間來呼叫dispatch_source_set_event_handler
的block,而是在dispatch_source_set_event_handler
被呼叫的時候就會被執行一次block,然後再按規定時間執行,這與NSTimer只有到觸發時間才執行有點不一致。
使用GCD來模擬NSTImer的最大好處就是不會強引用target,所以不用擔心記憶體洩漏。