Buscar..


Parámetros

Parámetro Detalles
interval El tiempo, en segundos, para esperar antes de encender el temporizador; o, en temporizadores de repetición, el tiempo entre disparos.
target El objeto para llamar al selector en
selector En Swift, un objeto Selector que especifica el método para llamar al target
repeats Si es false , dispara el temporizador solo una vez. Si es true , dispara el temporizador cada interval segundos.

Observaciones

Un NSTimer permite enviar un mensaje a un destino una vez transcurrido un período de tiempo específico.

Creando un temporizador

Esto creará un temporizador para llamar al método doSomething en self en 5 segundos.

Rápido

let timer = NSTimer.scheduledTimerWithTimeInterval(5,
                               target: self,
                             selector: Selector(doSomething()),
                             userInfo: nil,
                              repeats: false)

Swift 3

 let timer = Timer.scheduledTimer(timeInterval: 1,
                                        target: self, 
                                      selector: #selector(doSomething()), 
                                      userInfo: nil, 
                                       repeats: true)

C objetivo

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(doSomething) userInfo:nil repeats:NO];

La configuración se repite en false/NO indica que queremos que el temporizador se active solo una vez. Si configuramos esto en true/YES , se dispararía cada cinco segundos hasta que se invalide manualmente.

Manualmente disparando un temporizador

Rápido

timer.fire()

C objetivo

[timer fire];

Llamar al método de fire hace que un NSTimer realice la tarea que normalmente habría realizado en un horario.

En un temporizador que no se repite , esto invalidará automáticamente el temporizador. Es decir, activar el fire antes de que fire el intervalo de tiempo dará lugar a una sola invocación.

En un temporizador de repetición , esto simplemente invocará la acción sin interrumpir el horario habitual.

Invalidando un temporizador

Rápido

timer.invalidate()

C objetivo

[timer invalidate];

Esto detendrá el temporizador de disparar. Debe llamarse desde el hilo en el que se creó el temporizador, consulte las notas de Apple :

Debe enviar este mensaje desde el hilo en el que se instaló el temporizador. Si envía este mensaje desde otro hilo, es posible que la fuente de entrada asociada con el temporizador no se elimine de su ciclo de ejecución, lo que podría impedir que el hilo salga correctamente.

Notas: Una vez que se ha invalidado el temporizador, es imposible disparar el mismo temporizador invalidado. En su lugar, debe inicializar nuevamente el temporizador invalidado y activar el método de disparo.

Opciones de frecuencia del temporizador

Evento de temporizador repetido

Rápido

class ViewController: UIViewController {
 
    var timer = NSTimer()
    
    override func viewDidLoad() {
        NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: true)
    }

    func timerMethod() {
        print("Timer method called")
    }

    func endTimer() {
        timer.invalidate()
    }
}

Swift 3

class ViewController: UIViewController {
     
        var timer = Timer()
        
        override func viewDidLoad() {
            Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: true)
        }
    
        func timerMethod() {
            print("Timer method called")
        }

        func endTimer() {
            timer.invalidate()
        }
    }

Debe ser invalidado manualmente si lo desea.

Rápido

Evento temporizador retardado no repetido

NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: false)

Swift 3

 Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: false)

El temporizador se activará una vez, 3 segundos después del tiempo de ejecución. Será invalidado automáticamente, una vez disparado.

Paso de datos utilizando el temporizador

Si desea pasar algunos datos con el disparador del temporizador, puede hacerlo con el parámetro userInfo .

Este es el enfoque simple que brinda una breve idea de cómo puede pasar los datos al método activado desde el temporizador.

[ Swift 3 ]

Timer.scheduledTimer(timeInterval: 1.0, target: self, selector:#selector(iGotCall(sender:)), userInfo: ["Name": "i am iOS guy"], repeats:true)

[ Objetivo - C ]

NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                      target:self
                                                    selector:@selector(iGotCall:)
                                                    userInfo:@"i am iOS guy" repeats:YES];

La línea de código anterior pasa ["Name": "i am iOS guy"] a la userInfo del userInfo . Así que ahora, cuando se recibe la llamada de iGotCall , puede obtener el valor pasado como se muestra a continuación en el fragmento de código.

[ Swift 3 ]

func iGotCall(sender: Timer) {
        print((sender.userInfo)!)
    }

[ Objetivo - C ]

- (void)iGotCall:(NSTimer*)theTimer {
    NSLog (@"%@", (NSString*)[theTimer userInfo]);
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow