Buscar..


Creando un temporizador

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

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

Establecer el parámetro de repeats 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.

Invalidando un temporizador

[timer invalidate];
timer = nil;

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.

Establecer nil te ayudará a comprobar si se está ejecutando o no.

if(timer) {
    [timer invalidate];
    timer = nil;
}

//Now set a timer again.

Manualmente disparando un temporizador

[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.

Almacenando información en el temporizador

Al crear un temporizador, puede configurar el parámetro userInfo para que incluya información que desea pasar a la función a la que llama con el temporizador.

Al tomar un temporizador como parámetro en dicha función, puede acceder a la propiedad userInfo .

NSDictionary *dictionary = @{
                             @"Message" : @"Hello, world!"
                            }; //this dictionary contains a message
[NSTimer scheduledTimerWithTimeInterval:5.0
     target:self 
     selector:@selector(doSomething) 
     userInfo:dictionary
     repeats:NO]; //the timer contains the dictionary and later calls the function

...

- (void) doSomething:(NSTimer*)timer{
    //the function retrieves the message from the timer
    NSLog("%@", timer.userInfo["Message"]);
}


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