2011-07-28 21 views
5

Im tratando de encontrar la manera de detener la realización de un selector¿Cómo detener la ejecución del selector?

que puede iniciar uno al hacer esto

  [self performSelector:@selector(vibe)]; 

Pero estoy tratando de averiguar cómo puedo detener a uno.

Cualquier ayuda sería muy apreciada .. ¡Gracias!

+1

posible duplicado de [iPhone cómo cancelar la detención de performSelector] (http://stackoverflow.com/questions/3649273/iphone-how-to-cancel-stop-performselector) – Caleb

Respuesta

9

El método performSelector: es equivalente a enviar un mensaje de selección directamente al receptor, por lo que no se puede cancelar. Es decir, estas dos líneas tienen el mismo efecto:

[self performSelector:@selector(vibe)]; 
[self vibe]; 

Los cancelPreviousPerformRequestsWithTarget: (y similares) métodos sólo pueden cancelar los mensajes de selector que no se realiza inmediatamente. Puede enviar dicho mensaje a través del método performSelector:withObject:afterDelay: (y métodos similares).

Consulte la Tabla 3-2 de la sección Run Loop Management de la Guía de programación de roscas de Apple para obtener más información.

7
[NSObject cancelPreviousPerformRequestsWithTarget:self]; 
// or 
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(vibe) object:nil]; 
1

No es inmediatamente obvio, pero creo que el siguiente debería funcionar:

[NSObject cancelPreviousPerformRequestsWithTarget:self]; 
Cuestiones relacionadas