快速延迟功能

我没有一个代码样本或任何东西,因为我不知道如何做到这一点,但有人能告诉我如何延迟一个函数与快速设定的时间?

164514 次浏览

您可以使用 GCD (在例子中有10秒的延迟) :

Swift 2

let triggerTime = (Int64(NSEC_PER_SEC) * 10)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, triggerTime), dispatch_get_main_queue(), { () -> Void in
self.functionToCall()
})

Swift 3和 Swift 4

DispatchQueue.main.asyncAfter(deadline: .now() + 10.0, execute: {
self.functionToCall()
})

Swift 5或更晚

 DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
//call any function
}
 NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHere", userInfo: nil, repeats: false)

这将以3秒的延迟调用 function Here ()

用于向延迟函数添加参数。

首先设置一个字典,然后将其添加为 userInfo。

let arg : Int = 42
let infoDict : [String : AnyObject] = ["argumentInt", arg]


NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHereWithArgument:", userInfo: infoDict, repeats: false)

然后在调用的函数中

func functionHereWithArgument (timer : NSTimer)
{
if let userInfo = timer.userInfo as? Dictionary<String, AnyObject>
{
let argumentInt : Int = (userInfo[argumentInt] as! Int)
}
}

Swift 3及以上版本 延迟10秒

    DispatchQueue.main.asyncAfter(deadline: .now() + 10) { [unowned self] in
self.functionToCall()
}