2011-07-28 55 views
5

我试着去弄清楚如何停止执行选择如何停止执行选择器?

我可以做这个

  [self performSelector:@selector(vibe)]; 

但是我试图找出我怎么能阻止一个启动一个。

任何帮助将非常感谢..谢谢!

+1

可能重复[iPhone如何取消停止performSelector](http://stackoverflow.com/questions/3649273/iphone-how-to-cancel-stop-performselector) – Caleb

回答

9

performSelector:方法等同于直接发送选择信息到接收器,所以它不能被取消。即,这两条线具有相同的效果:

[self performSelector:@selector(vibe)]; 
[self vibe]; 

cancelPreviousPerformRequestsWithTarget:(以及类似)方法只能取消未立即执行选择的消息。您可以通过performSelector:withObject:afterDelay:(以及类似的)方法发送此类消息。

有关更多信息,请参阅Apple的线程编程指南的Run Loop Management部分的表3-2。

7
[NSObject cancelPreviousPerformRequestsWithTarget:self]; 
// or 
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(vibe) object:nil]; 
1

这不是很明显,但我相信下面应该工作:

[NSObject cancelPreviousPerformRequestsWithTarget:self];