2010-07-19 19 views
7

si puedo tener un runloop así:cómo detener un temporizador desencadenado runloop?

NSRunloop* loop = [NSRunloop currentRunLoop]; 
[runLoop addTimer:anyTimer forMode:NSDefaultRunLoopMode]; 

¿Puedo detener de nuevo? o es la única forma de ignorar la notificación que uso para desencadenar la acción posterior?

bien, doy un ejemplo para el problema:

-(void)blinkeffekt:(double)pollingTime{ 

NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; 

if (pollingTime != 0) { 
    NSTimeInterval interval =(double)pollingTime/1000; 
    NSTimer timer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(polling) userInfo:nil repeats:YES]; 
    [runLoop addTimer:timer forMode:NSDefaultRunLoopMode]; 
} 
else { 

    [timer invalidate]; 
} 

}

sin duda, aquí hay varios errores - no hay duda. pero creo, muestra mi problema y esto no es realmente solucionable con las respuestas hasta ahora.

necesito ejecutar un cronómetro y detenerlo más tarde. e idealmente de otra función en la clase. pero luego no puedo acceder al "temporizador" y Runloop no permite averiguar, si tal "mensaje" está disponible. y sería extremadamente ineficaz, si registrase para cada llamada de la función un nuevo temporizador.

Respuesta

19

Debe enviar un mensaje de invalidación al temporizador para eliminarlo de RunLoop.

See Doc

[anyTimer invalidate]; 
+0

allí antes, tuve que obligar a que el temporizador del objeto, que yo no perder la referencia. pero sí, entonces funciona – nico

Cuestiones relacionadas