ios swift function delay

ios - Función de retraso en swift



function delay (4)

Para agregar argumento a la función de retraso.

Primero configure un diccionario y luego agréguelo como userInfo. Desenvuelva la información con el temporizador como argumento.

let arg : Int = 42 let infoDict : [String : AnyObject] = ["argumentInt", arg] NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHereWithArgument:", userInfo: infoDict, repeats: false)

Luego en la función llamada

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

Esta pregunta ya tiene una respuesta aquí:

No tengo un código para probar ni nada, porque no tengo idea de cómo hacerlo, pero ¿alguien puede decirme cómo retrasar una función con rapidez durante un período de tiempo determinado?


Puede usar GCD (en el ejemplo con un retraso de 10 segundos):

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 y Swift 4

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


Swift 3 y versiones anteriores por un retraso de 10 segundos

unowned let unownedSelf = self let deadlineTime = DispatchTime.now() + .seconds(10) DispatchQueue.main.asyncAfter(deadline: deadlineTime, execute: { unownedSelf.functionToCall() })


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

Esto llamaría a la función functionHere () con un retraso de 3 segundos