当使用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,所以不用担心内存泄漏。