He creado un temporizador con swift. Cuando se activa manda eventos regularmente a un objeto y método determinado. La activación requiere un objeto de destino, un método de este objeto que trate el evento, un intervalo de tiempo entre eventos y una duración del temporizador. El método no puede tener parámetros.
El código está en una clase pero se puede extraer la función activa y reutilizarla para lo que se quiera.
//
// VRTemporizador.swift
// VR017Timer
//
// Created by Víctor José Rodriguez Martin on 23/08/14.
// Copyright (c) 2014 es.com.vjrm. All rights reserved.
//
import Cocoa
import Foundation
class VRTemporizador: NSObject {
/*
* Función activa() : crea un temporizador de duración determinada que lanza periódicamente eventos que son tratados por la función de un objeto
*
* @param objetivo : objeto que tratará el evento. Debe estar creado antes.
* @param funcion : nombre de la función que tratará el evento. No puede tener parámetros.
* @param intervalo : intervalo de tiempo entre evento y evento
* @param duracion : duración máxima del temporizador
*/
func activa(objetivo: AnyObject, funcion: String, intervalo: Double, duracion: Double){
// Crear el temporizador
var temporizador = NSTimer(timeInterval: intervalo, target: objetivo, selector: NSSelectorFromString(funcion), userInfo: nil, repeats: true)
// Crear el bucle de sondeo
var bucleSondeo:NSRunLoop = NSRunLoop.currentRunLoop()
// Calcular la fecha de finalización del bucle de sondeo
var tiempoFinal:NSDate = NSDate(timeIntervalSinceNow: duracion)
// Añadir el temporizador al bucle de sondeo
bucleSondeo.addTimer(temporizador, forMode:NSDefaultRunLoopMode)
// Poner en funcionamiento el bucle
bucleSondeo.runUntilDate(tiempoFinal)
}
}
Una llamada típica sería
var timer = VRTemporizador()
timer.activa(destino,funcion: "respuesta", intervalo: 2.0, duracion: 20)
Con un objeto "destino" que tiene un método "respuesta" sin parámetros.
Puede descargarse junto con un ejemplo de utilización en www.vjrm.com.es/swift/VR017Timer.zip
Saludos de Víctor.-
Puede descargarse junto con un ejemplo de utilización en www.vjrm.com.es/swift/VR017Timer.zip
Saludos de Víctor.-




