GCD Timer相比NSTimer有哪些优势?

这些优势里面有没有哪个是NSTimer不可能弥补的?

阅读 2.8k
1 个回答
  • 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使用场景差不多
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏