2008-12-03 10 views

Respuesta

7

También puede usar -[NSObject performSelector:awithObject:afterDelay:] y +[NSObject cancelPreviousPerformRequestsWithTarget:selector:object].

+0

+ cancelPreviousPerformRequestsWithTarget: selector: object: es un método de clase (+), no un método de instancia (-). Es por eso que toma el objetivo (instancia) como uno de sus argumentos. –

+0

¡Ups, tienes razón, gracias por la captura! –

+0

Este es mucho más fácil de usar que NSTimer. ¿O me estoy perdiendo algo? –

1

en su cabecera ..

NSTimer *timer; 

cuando se quiere configurar ..

timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(yourMethod:) userInfo:nil repeats:NO]; 

cuando se desea cancelar ..

[timer invalidate]; 
+0

No olvide retener el temporizador cuando lo configure y lo suelte después de invalidarlo. Confiar en el ciclo de ejecución para retenerlo es una mala forma y corre el riesgo de romperse si Apple alguna vez cambia la implementación. –

3

Uso NSTimer. Use esto para configurar una llamada al método en tres segundos. Sólo se llama una vez:

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

método debe tener este aspecto:

- (void) method: (NSTimer*) theTimer; 

Puede pasar parámetros en el método que utiliza userInfo (ajustado a nula en el anterior ejemplo). Se puede acceder en el método como [theTimer userInfo].

Utilice el invalidar el método en NSTimer para cancelarlo.

+0

¿El método TIENE que verse así? ¿Y hay algo que hacer con la instancia de NSTimer aprobada? –

+0

Creo que estoy en lo cierto al decir que el método tiene que ser así. El parámetro userInfo se usa para pasar datos adicionales. Es acceso como [la información de usuario del temporizador] en su método. –

Cuestiones relacionadas