Si usted quiere ser capaz de cancelar el temporizador, hay que referirse a la el temporizador que está cancelando, y eso significa que tiene que mantener el puntero del temporizador, ver la respuesta de justin.
Mantener una referencia al temporizador es la manera correcta de hacerlo, pero para completar, también puede utilizar el método -performSelector:withObject:afterDelay:
como temporizador de un hombre pobre. Esa llamada puede invalidarse usando +cancelPreviousPerformRequestsWithTarget:
. Código de ejemplo:
- (void) viewDidLoad
{
[super viewDidLoad];
[self performSelector:@selector(timerTick) withObject:nil afterDelay:10];
}
Y luego:
- (void) viewWillDisappear
{
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[super viewWillDisappear];
}
Pero esta no es la forma correcta de hacerlo, porque puede haber otras solicitudes pendientes-selector realizar en el objeto que se cancelaría. Lo mejor es mantener su temporizador, de esa forma usted sabe exactamente lo que está cancelando.
Por cierto, también es probable que sea una mala idea ejecutar un temporizador en -viewDidLoad
. La carga de la vista puede realizarse en cualquier momento, sin que se visualice ninguna relación con la vista.
¿Qué quiere decir con * No quiero crear el objeto NSTimer *? Ya creas uno usando 'scheduledTimerWithTimeInterval'. – sch
Quiero decir que no tengo el temporizador que creo. ¿Es posible? – Voloda2