iOS DispatchSourceTimer使用的一些心得

iOS定时器一般来说就三种,NSTimer,CADisplayLink,GCD

而GCD相对来说比精度高,使用方便。之前只是简单使用,这次项目用到了多次调用同一个定时器,所以踩了一些坑。(还是因为笔者菜,哈哈)

简单说下我使用的场景,在一个VC里面有一个答题业务,10道题在同一个页面,答题时间到了就自动跳下一题,直到答题完成才到下一个页面。

问题一,调试过程中崩了,代码如下:

这个倒好解决,加上timer.resume()即可

问题二,定时器没有执行

加上timer.cancel()即可,一般来说,timer.resume()和time.cancel()是成对出现的

问题三,当timer是suspend状态的时候,ViewControllerB做pop操作时

这是因为timer是suspend状态,而timer作为属性时候释放,timer又做了一遍cancel,所以崩了。timer在suspend状态都不可做cancel操作。

我是直接判断timer是否是resume状态,在VC做pop操作之前手动处理。

总的来说,DispatchSourceTimer用起来真的很方便,只要注意线程交互,还有resume、suspend、cancel状态,就可以很好调用一个高精度的定时器啦。

喜欢的点记得点赞哦~

你可能感兴趣的:(iOS DispatchSourceTimer使用的一些心得)