2010-09-06 11 views
72

W moim app iPhone używam następującą funkcję zrobić coś po pewnym opóźnieniemiPhone jak anulować zatrzymania performSelector

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

Czy jest jakiś sposób, aby anulować tę performSelector i przestać robić pewne rzeczy po opóźnieniu ?

Odpowiedz

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

Czy istnieje opcja dla szybkich? – morroko

2

Pomyślałem, że może to być użyteczne dla ludzi, aby zobaczyć jakiś rzeczywisty kod, więc tutaj są dwa, które mogę używać do zatrzymania dźwięki i przeciągnięcia kiedy idę do innego ekranu.

- (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 wersja:

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