2010-09-06 11 views
72

Nel mio iPhone app, sto usando la seguente funzione di fare qualcosa con un certo ritardoiPhone come annullare fermata performSelector

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay; 

Esiste un modo per annullare questa performSelector e smettere di fare qualche cosa dopo il ritardo ?

risposta

177
[NSObject cancelPreviousPerformRequestsWithTarget:yourTarget selector:aSelector object: anArgument]; 
+1

c'è qualche possibilità per la rapida? – morroko

2

ho pensato che potrebbe essere utile per le persone a vedere un po 'di codice vero e proprio, per cui qui sono due che io uso di smettere di suoni e strisciata quando vado a un'altra schermata.

- (void)handleSwipeNext { 

    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(handleSwipeNext) object:nil]; 

    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(playPromptAndTarget) object:nil]; 

// do some swipe handling stuff 
} 
1

Swift 4.0 Versione:

NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(yourFunc), object: nil)