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状态,就可以很好调用一个高精度的定时器啦。

喜欢的点记得点赞哦~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容