【发布时间】:2011-07-28 03:40:45
【问题描述】:
我想弄清楚如何停止执行选择器
我可以这样做
[self performSelector:@selector(vibe)];
但我想弄清楚如何才能阻止它。
任何帮助将不胜感激..谢谢!
【问题讨论】:
标签: objective-c ios selector
我想弄清楚如何停止执行选择器
我可以这样做
[self performSelector:@selector(vibe)];
但我想弄清楚如何才能阻止它。
任何帮助将不胜感激..谢谢!
【问题讨论】:
标签: objective-c ios selector
performSelector: 方法相当于直接向接收者发送选择器消息,因此无法取消。即,这两行具有相同的效果:
[self performSelector:@selector(vibe)];
[self vibe];
cancelPreviousPerformRequestsWithTarget:(和类似的)方法只能取消不立即执行的选择器消息。您可以通过performSelector:withObject:afterDelay:(和类似的)方法发送此类消息。
有关详细信息,请参阅 Apple 线程编程指南的 Run Loop Management 部分的表 3-2。
【讨论】:
[NSObject cancelPreviousPerformRequestsWithTarget:self];
// or
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(vibe) object:nil];
【讨论】:
这不是很明显,但我相信以下应该有效:
[NSObject cancelPreviousPerformRequestsWithTarget:self];
【讨论】: