Ios 使用分派时间定期执行任务

Ios 使用分派时间定期执行任务,ios,swift,Ios,Swift,我尝试使用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

我尝试使用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))
这项工作:

let delay: NSTimeInterval = 600
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(Double(NSEC_PER_SEC) * delay))
dispatch_after(time, dispatch_get_main_queue(), { () -> Void in
})

long interval=600
未在Swift中编译。请张贴您的真实代码。对不起,输入错误。现在更新。为什么不使用计时器呢?尝试了NSTimer,请查看我的更新。规则:既然你找不到错误,它就是你没有查找的地方。您拒绝显示someService.getInterval(),因此这是最有可能出现错误的地方。你声称它能退回600英镑。你的代码不起作用。所以有些你认为是假的。谢谢,但我更新了我的问题,请看一下。这是一个小变化。
延迟
属于
NSTimeInterval
类型