El uso de temporizadores ( NSTimer ) para desarrollar aplicaciones para el iPhone de Apple es muy frecuente, no sólo en la fabricación de juegos. Uno de los problemas con los que uno puede chocar es la asincronía del temporizador, que puede dar lugar, durante la detención de uno o más contadores de tiempo, la caída de nuestra aplicación. , si invoca la invalidate che, appunto, arresta il timer. Cuando se quiere detener uno o varios temporizadores, donde repeats está establecido en YES , se invoca el invalidate que, precisamente, el temporizador se detiene. Por ejemplo, el código de abajo, se activa un temporizador que invoca el método myTimerMethod cada 5 segundos:
1 2 3 4 5 6 7 8 9 10 11 12 | / / / / MyTimer se define como mundial / / NSTimer scheduledTimerWithTimeInterval : 5.0 myTimer = [ NSTimer scheduledTimerWithTimeInterval: 5.0 Objetivo: auto ( myTimerMethod ) selector: @ selector (myTimerMethod) userInfo: nil ] ; repite: YES]; / / void ) myTimerMethod { - (Void) {myTimerMethod / / Do ... } |
Si queremos detener el temporizador:
1 | ; [MyTimer invalidar]; |
Sin embargo, "invalidar" el contador de tiempo que sea "peligroso" de la variable - global - myTimer . Así que la mejor manera - y seguro - para detener un cronómetro podría ser:
1 2 3 4 | myTimer != nil ) { if (myTimer! = nil) { ; [MyTimer invalidar]; ; myTimer = nil; } |
Este procedimiento también puede ser útil para restablecer un contador de tiempo (global):
1 2 3 4 5 6 7 8 9 10 | myTimer != nil ) { if (myTimer! = nil) { ; [MyTimer invalidar]; ; myTimer = nil; / / Poner el contador a 25 segundos NSTimer scheduledTimerWithTimeInterval : 25.0 myTimer = [ NSTimer scheduledTimerWithTimeInterval: 25,0 Objetivo: auto ( myTimerMethod ) selector: @ selector (myTimerMethod) userInfo: nil ] ; repite: YES]; } |










No hay comentarios para esta entrada
Deja un comentario