IPhone, как отменить стоп-функциюSelector

В моем приложении iPhone я использую следующую функцию, чтобы что-то сделать после некоторой задержки

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

Есть ли способ отменить этот эффектSelector и перестать делать что-то после задержки?

Ответ 1

[NSObject cancelPreviousPerformRequestsWithTarget:yourTarget selector:aSelector object: anArgument];

Ответ 2

Я подумал, что для людей может быть полезно увидеть какой-то реальный код, поэтому вот два, которые я использую, чтобы остановить звуки и прокручивать, когда я перехожу на другой экран.

- (void)handleSwipeNext {

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

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

// do some swipe handling stuff
}

Ответ 3

Версия Swift 4.0:

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