iOS定時器一般來說就三種,NSTimer射众,CADisplayLink,GCD
而GCD相對來說比精度高晃财,使用方便叨橱。之前只是簡單使用,這次項目用到了多次調(diào)用同一個定時器拓劝,所以踩了一些坑雏逾。(還是因為筆者菜,哈哈)
簡單說下我使用的場景郑临,在一個VC里面有一個答題業(yè)務(wù)栖博,10道題在同一個頁面,答題時間到了就自動跳下一題厢洞,直到答題完成才到下一個頁面仇让。
問題一,調(diào)試過程中崩了躺翻,代碼如下:
這個倒好解決丧叽,加上timer.resume()即可
問題二,定時器沒有執(zhí)行
加上timer.cancel()即可公你,一般來說踊淳,timer.resume()和time.cancel()是成對出現(xiàn)的
問題三,當timer是suspend狀態(tài)的時候,ViewControllerB做pop操作時
這是因為timer是suspend狀態(tài)迂尝,而timer作為屬性時候釋放脱茉,timer又做了一遍cancel,所以崩了垄开。timer在suspend狀態(tài)都不可做cancel操作琴许。
我是直接判斷timer是否是resume狀態(tài),在VC做pop操作之前手動處理溉躲。