定時器的實現:
GCD定時器
GCD定時器優缺點:
1.它不需要顯示的停掉定時器,由系統幫助我們處理。不需要考慮內存泄露問題。
2.時間精度上存在問題,存在誤差又是達到0.2秒。
3.這個定時器作用于他自己開辟線程里邊的runloop中,在tableView中使用不會出現問題。
NSTimer定時器優缺點:
1.定時器精度較為準確。
2.需要考慮停掉定時器,來解決內存釋放的問題。
3.NSTimer是作用于當前的runloop里邊的,如果是把定時器用到tableView里邊可能會出現問題。
注意:
為什么要把這類的定時器source設置為全局變量呢?設置為局部變量不可以嗎?答案是不可以。先明確子線程的生命周期這個概念:
當子線程的任務執行完之后,子線程會自動退出。
那這里我們的任務什么時候結束呢?這里結束的標志依賴于source的生命周期,source消亡,當source消亡就意味著線程終止。因此我們不能把它生命為局部變量。