gpt4 book ai didi

ios - 使用dispatch_time定期执行任务

转载 作者:行者123 更新时间:2023-11-30 13:57:57 26 4
gpt4 key购买 nike

我尝试使用dispatch_time以600秒的间隔定期递归调用doTask()。这是我的简单代码:

private func doTask() -> Void {
var interval : NSTimeInterval = someService.getInterval() //it is 600
NSLog("interval = \(interval)"); //Like I said, it is 600, because I see the log
let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(interval * Double(NSEC_PER_SEC)))

//recursively call doTask() after 600 seconds
dispatch_after(dispatchTime,
GlobalBackgroundQueue,
{self.doTask()}
)
}

这是GlobalBackgroundQueue:

var GlobalBackgroundQueue: dispatch_queue_t {
return dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.value), 0)
}

但是当我调用doTask()函数时,在运行时,每次调用doTask()之间的间隔是15秒。为什么?为什么间隔不是 600 秒?

=====更新=====

我也尝试过 NSTimer:

NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "doTask", userInfo: nil, repeats: true)

但在运行时,doTask() 每 20 秒调用一次。还不到 600 秒。

最佳答案

试试这个

let delay: UInt64 = 600
let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * NSEC_PER_SEC))

关于ios - 使用dispatch_time定期执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33369283/

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