NSTimer 需要一个运行的Runloop 来处理其定时任务, MainThread是一直启动并运行的,所以在自定的线程如果使用NSTIme必须手动开启并运行子线程的Runloop NSTimer 必须调用 invalidate 来停止其定时任务,并且NSTimer 对其Target是强引用,要注意Target 与 - NSTimer间造成的循环引用造成的内存泄漏(可以封装成一个类方法来解决此问题) NSTimer 的创建和 invalidate必须放在相同的线程中进行 GCDTimer 是基于GCD实现的,使用的时候只要我们把任务提交给相应队列就好 GCDTimer 在使用时要注意 dispatch_resume(obj) dispatch_suspend(obj) -dispatch_source_cancel(obj)API 的使用 GCDTimer 在对文件资源定期进行读写操作时很方便,其他与NSTimer使用场景差不多