iOS GCD使用dispatch_after、dispatch_time、dispatch_walltime

iOS GCD使用dispatch_after、dispatch_time、dispatch_walltime,第1张

我们经常会有需要一个方法或者处理需要延迟一段时间执行, dispatch_after 函数就是用来实现这种功能

打印结果如下

dispatch_after 有三个参数,第一个参与用来指定时间,传入的是dispatch_time_t类型的值,通过dispatch_time和dispatch_walltime函数生成。第二个参数是任务添加的队列,第三个是任务的block。

dispatch_after 的功能是在指定的时间将任务加入到队列中,而不是在指定的时间执行,如果所在的队列上有耗时任务在执行,那么时间上可能出现误差。

打印结果

dispatch_time 需要传入两个参数,第一个参数是时间点,第二个参数是时间长度,函数的作用就是获取时间点经过时间长度之后的时间点。第一个参数我们经常使用的是DISPATCH_TIME_NOW,表示现在这个时间点。第二个参数表示的时间长度使用数组 NSEC_PER_SEC的方式获得。

dispatch_walltime 函数的第一个参数需要一个struct timespec类型的值,第二个参数是以纳秒为单位的延迟时间。

打印结果

“在自动化测试过程中,Android可以用adb来辅助,IOS却不太好 *** 作,有没有办法呢?

在自动化中,IOS我们可以用libimobiledevice来辅助做一些工作,用xcrun simctl可以来 *** 纵模拟器,具体咋用呢?

什么是libimobiledevice

一个跨平台的软件协议库和工具来与iOS设备进行本地通信 LipimBielEdter是一个跨平台的软件库,用于支持iPhone等mac设备的协议。不像其他项目,它不依赖于使用任何现有的专有库,不需要越狱。它允许其他软件轻松访问设备的文件系统,检索有关设备及其内部设备的信息。官方网站: >

解决使用vue做时间转换或倒计时,在ios上显示为NAN的问题

试过网上的正则匹配替换"-"为"/",但无效

最后使用momentjs成功解决

首先打开终端安装moment

npm install moment --save

安装成功后显示

使用示例(时间戳可用来对比时间差做倒计时等):

转化后 2021/01/10 10:12:12 时间戳 1610244732000

ios锁屏或页面隐藏时,定时器setInterval倒计时不执行,解锁显示后才执行的问题

2021-08-26 22:04 625阅读

手机锁屏后,ios h5浏览器定时器暂停执行了,发送验证码的秒数或倒计时没有继续往下走,遇到这种问题可以用visibilitychange这种方式处理

addVisibilitychange();这个方法记得只在ios环境下执行,安卓不需要。网上找一下判断ios和安卓的方法。

// 监听页面隐藏(锁屏)或后台执行时,解决定时器不执行的问题

addVisibilitychange(){

let that = this;

let start,end,vibS,newS;

documentaddEventListener('visibilitychange',function(){

// hidden 为锁屏隐藏状态,visible为重新显示状态

if(documentvisibilityState === 'hidden'){

start = new Date()getTime();

} else if(documentvisibilityState === 'visible'){

end = new Date()getTime();

// vibS为锁屏间隔的时间(秒),timer为定时器锁屏前显示的秒数

vibS = Mathfloor((parseInt(end) - parseInt(start))/1000)

newS = parseInt(thattimer) - vibS

if(newS >0){

// 重新赋值,间隔后的新的定时器时间

thattimer = newS

} else {

// 已经超出范围,则默认秒数已经读完,恢复原来时间、定时器,显示重发验证码文案

thattimerShow = false;

clearInterval(thattimeing)

thattimeing = null

thattimer = 120

}

}

});

},

定时器代码

getTimeCount(){

if(!thistimeing){

thissmsCode = ""; // 清空验证码

thistimerShow = true;

thistimeing = setInterval(()=>{

thistimer--

if(thistimer <0){

thistimerShow = false;

clearInterval(thistimeing)

thistimeing = null

thistimer = 120

}

},1000)

}

},

收藏

关注

赞( 0)

海报 分享

文章版权声明:注明蒲公英云原创文章,转载或复制请以几秒超链接形式并注明出处。

发表评论

以上就是关于iOS GCD使用dispatch_after、dispatch_time、dispatch_walltime全部的内容,包括:iOS GCD使用dispatch_after、dispatch_time、dispatch_walltime、iOS自动化【一点经验】、Vue解决时间在ios显示NAN的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9444427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存