鍍金池/ 問答/iOS/ GCD Timer相比NSTimer有哪些優(yōu)勢?

GCD Timer相比NSTimer有哪些優(yōu)勢?

這些優(yōu)勢里面有沒有哪個是NSTimer不可能彌補的?

回答
編輯回答
六扇門
  • NSTimer 需要一個運行的Runloop 來處理其定時任務(wù), MainThread是一直啟動并運行的,所以在自定的線程如果使用NSTIme必須手動開啟并運行子線程的Runloop
  • NSTimer 必須調(diào)用 invalidate 來停止其定時任務(wù),并且NSTimer 對其Target是強引用,要注意Target 與 - NSTimer間造成的循環(huán)引用造成的內(nèi)存泄漏(可以封裝成一個類方法來解決此問題)
  • NSTimer 的創(chuàng)建和 invalidate必須放在相同的線程中進行
  • GCDTimer 是基于GCD實現(xiàn)的,使用的時候只要我們把任務(wù)提交給相應(yīng)隊列就好
  • GCDTimer 在使用時要注意 dispatch_resume(obj) dispatch_suspend(obj) -dispatch_source_cancel(obj)API 的使用
  • GCDTimer 在對文件資源定期進行讀寫操作時很方便,其他與NSTimer使用場景差不多
2017年10月2日 22:34