Ответ 1
[NSObject cancelPreviousPerformRequestsWithTarget:yourTarget selector:aSelector object: anArgument];
В моем приложении iPhone я использую следующую функцию, чтобы что-то сделать после некоторой задержки
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
Есть ли способ отменить этот эффектSelector и перестать делать что-то после задержки?
[NSObject cancelPreviousPerformRequestsWithTarget:yourTarget selector:aSelector object: anArgument];
Я подумал, что для людей может быть полезно увидеть какой-то реальный код, поэтому вот два, которые я использую, чтобы остановить звуки и прокручивать, когда я перехожу на другой экран.
- (void)handleSwipeNext {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(handleSwipeNext) object:nil];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(playPromptAndTarget) object:nil];
// do some swipe handling stuff
}
Версия Swift 4.0:
NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(yourFunc), object: nil)