2010-09-06 92 views
72

在我的iPhone应用程序,我使用下面的函数有一些延迟iPhone如何取消停止performSelector

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

后什么都没做有什么办法可以取消这个performSelector和停止延迟后做一些事?

回答

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

是否有任何迅速的选择吗? – morroko 2016-11-04 10:15:52

2

我认为,让人们看到一些实际的代码,它可能是有用的,所以这里有两个我用,当我去到另一个屏幕停止声音和刷卡。

- (void)handleSwipeNext { 

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

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

// do some swipe handling stuff 
} 
1

雨燕4.0的版本:

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