2010-09-06 2 views
72

Dans mon application iPhone, j'utilise la fonction suivante pour faire quelque chose après un certain délaiiPhone comment annuler l'arrêt performSelector

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

Est-il possible d'annuler cette performSelector et cesser de faire quelque chose après le délai ?

Répondre

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

est-il une option pour rapide? – morroko

2

Je pense qu'il pourrait être utile pour les gens de voir le code réel, donc voici deux que j'utilise pour arrêter les sons et le balayage vers quand je vais à un autre écran.

- (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 version 4.0:

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