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操作之前手动处理。
网友评论