У меня нет кода для образца или чего-то еще, потому что я понятия не имею, как это сделать, но может ли кто-нибудь, пожалуйста, рассказать мне, как быстро отложить функцию с заданным временем?
Функция задержки в быстром
Ответ 1
Вы можете использовать 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()
})
Ответ 2
Swift 3 и выше версии (версий) с задержкой в 10 секунд
DispatchQueue.main.asyncAfter(deadline: .now() + 10) { [unowned self] in
self.functionToCall()
}
Ответ 3
NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHere", userInfo: nil, repeats: false)
Это вызовет функцию functionHere() с задержкой в 3 секунды
Ответ 4
Для добавления аргумента в функцию задержки.
Сначала установите словарь, затем добавьте его как 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)
}
}