2010-09-06 86 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)