gpt4 book ai didi

iOS DispatchQueue.main.asyncAfter(截止日期 : delayTime) never dispatch if delayTime is long

转载 作者:行者123 更新时间:2023-11-28 15:47:22 24 4
gpt4 key购买 nike

var maxCumulativeTime: Int32;
maxCumulativeTime = 10 * 60 * 1000;
let dispatchTimeNSEC = Int64(Double (maxCumulativeTime) * Double(NSEC_PER_MSEC))
let delayTime = DispatchTime.now() + Double(dispatchTimeNSEC) / Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: delayTime) {
doSomething()
}

如果 delayTime 很短,比如 5 秒,doSomething() 将始终被调用。但是如果 delayTime 很长,比如说 10 分钟,doSomething() 永远不会被调用。

我让应用程序保持运行,从不终止它。电话在 10 分钟的延迟时间内进入休眠状态。但是在我唤醒手机后,doSomething 仍然没有被调用。

有什么想法吗?

最佳答案

在 Swift 3 中,您可以简化 deadline 的计算 -

let delayTime = DispatchTime.now() + .seconds(60 * 60 * 1000)

DispatchQueue.main.asyncAfter(deadline: delayTime) {
doSomething()
}

不一定是您正在寻找的答案,但可能会帮助您更接近解决方案

如果你的时间以毫秒为单位...

let delayTime = DispatchTime.now() + .milliseconds(timeValue)

关于iOS DispatchQueue.main.asyncAfter(截止日期 : delayTime) never dispatch if delayTime is long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42821609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com