scheduledtimer scheduled example create ios swift ios9 ios10 xcode8-beta3

scheduled - timer ios swift



Timer.scheduledTimer swift 3 pre compatibilidad con iOS 10 (7)

Necesito programar un temporizador para activar una función cada segundo, pero veo que en xcode 8 beta 3 el programador programado solo está disponible para iOS 10. ¿Hay alguna alternativa para usar el temporizador en iOS 9 o versiones anteriores?

Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { (timer) in print("Hi!")})


Actualizado para swift 3:

Si desea usar el temporizador por algún retraso o cualquier otro propósito, utilice las líneas de código de su proyecto;

// definición de la función:

func usedTimerForDelay() { Timer.scheduledTimer(timeInterval: 0.3, target: self, selector: #selector(self.run(_:)), userInfo: nil, repeats: false) } func run(_ timer: AnyObject) { print("Do your remaining stuff here...") }

// Llamada de función:

self.usedTimerForDelay()

NOTA: - puedes cambiar el intervalo de tiempo que quieras.

// Disfruta de la codificación ..!


Aquí está el código de ejemplo viable con compatibilidad:

if #available(iOS 10.0, *) { Timer.scheduledTimer(withTimeInterval: 15.0, repeats: true){_ in // Your code is here: self.myMethod() } } else { Timer.scheduledTimer(timeInterval: 15.0, target: self, selector: #selector(self.myMethod), userInfo: nil, repeats: true) }

// Su método o función:

// MARK: - Method @objc func myMethod() { print("Hi, How are you.") }


Ejecutar un temporizador con swift3,

var timer: Timer? func startTimer() { if timer == nil { timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.loop), userInfo: nil, repeats: true) } } func stopTimer() { if timer != nil { timer?.invalidate() timer = nil } } func loop() { let liveInfoUrl = URL(string: "http://192.168.1.66/api/cloud/app/liveInfo/7777") let task = URLSession.shared.dataTask(with: liveInfoUrl! as URL) {data, response, error in guard let data = data, error == nil else { return } print(String(data: data, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) ?? "aaaa") } task.resume() }

Suelte el temporizador cuando no lo use.

Una vez programado en un bucle de ejecución, el temporizador se dispara en el intervalo especificado hasta que se invalida. Un temporizador de no repetición se invalida inmediatamente después de dispararse. Sin embargo, para un temporizador de repetición, debe invalidar el objeto del temporizador usted mismo llamando a su método invalidate ().


La forma correcta es:

Timer.scheduledTimer(withTimeInterval: 2, repeats: false){_ in "Here your code method" }


Resuelto usando

Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateTime), userInfo: nil, repeats: true)


Swift 3

func runCode(in timeInterval:TimeInterval, _ code:@escaping ()->(Void)) { DispatchQueue.main.asyncAfter( deadline: .now() + timeInterval, execute: code) } func runCode(at date:Date, _ code:@escaping ()->(Void)) { let timeInterval = date.timeIntervalSinceNow runCode(in: timeInterval, code) } func test() { runCode(at: Date(timeIntervalSinceNow:2)) { print("Hello") } runCode(in: 3.0) { print("World)") } }


Timer.scheduledTimer

Ponlo en el hilo principal.