如何停止执行选择器?

时间:2011-07-28 03:40:46

标签: objective-c ios selector

我试图找出如何停止执行选择器

我可以通过这样做来开始

            [self performSelector:@selector(vibe)];

但我试图找出如何阻止一个人。

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:9)

performSelector:方法相当于直接向接收方发送选择器消息,因此无法取消。即,这两行具有相同的效果:

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

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

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

答案 1 :(得分:7)

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

答案 2 :(得分:1)

这并不是很明显,但我相信以下内容应该有效:

[NSObject cancelPreviousPerformRequestsWithTarget:self];