Objective c 取消排队的performSelector:afterDelay调用
有人知道在调用Objective c 取消排队的performSelector:afterDelay调用,objective-c,selector,Objective C,Selector,有人知道在调用performSelector:withObject:afterDelay时,是否可以从事件堆栈或计时器堆栈(或API使用的任何机制)中取消已排队的选择器事件 我使用这个事件堆栈来更改选项卡栏选项卡中图像的属性,有时会在一个快速执行的循环中排队等待长达10秒的更改。。。大概5毫秒左右 如果用户切换选项卡,则会出现问题。。。比如说,我让图像更改排队等待一个图像,该图像在启用Tab#4后立即显示,然后用户快速切换到Tab#3,然后右回到Tab#4。。。然后,当旧队列仍在播放时,这将重新
performSelector:withObject:afterDelay
时,是否可以从事件堆栈或计时器堆栈(或API使用的任何机制)中取消已排队的选择器事件
我使用这个事件堆栈来更改选项卡栏选项卡中图像的属性,有时会在一个快速执行的循环中排队等待长达10秒的更改。。。大概5毫秒左右
如果用户切换选项卡,则会出现问题。。。比如说,我让图像更改排队等待一个图像,该图像在启用Tab#4后立即显示,然后用户快速切换到Tab#3,然后右回到Tab#4。。。然后,当旧队列仍在播放时,这将重新排队10秒,如果切换速度足够快,可能需要2或3秒左右的时间。。。但是,即使在5秒钟内到达溪流也是一个问题
所以我需要一些方法来取消旧的更改堆栈,然后再将新堆栈放在
我用过去时编写这个查询,因为我已经找到了解决这个问题的另一种方法,在回放函数中添加了鹰眼事件过滤器。然而,我仍然好奇是否可以取消活动,因为我感觉这样的知识在未来会派上用场。感谢您提供的任何帮助:)
或
target
是调用performSelector:afterDelay:
的原始对象
例如:
// schedule the selector
[self performSelector:@selector(mySel:) withObject:nil afterDelay:5.0];
// cancel the above call (and any others on self)
[NSObject cancelPreviousPerformRequestsWithTarget:self];
请参见,它位于执行选择器:withObject:afterDelay:说明的末尾。检查nsrunlop文档。如果要查找“performSelector”以使其匹配“
取消以前的performSelector
”,则需要-cancelPerformSelector with target:
。。。没有。(啊,苹果,你为什么这样对我?)
呃,啊,"匹配"的方法是:
performSelector
cancelPreviousPerformRequestsWithTarget
(只是为了在不搜索文档的情况下更难记住。)要取消以前的所有执行请求,您可以使用:
[NSObject cancelPreviousPerformRequestsWithTarget:self];
要了解其用法,请尝试以下方法:[NSObject cancelPreviousPerformRequestsWithTarget:self];[NSObject cancelPreviousPerformRequestsWithTarget:自选择器:@selector(mySel:)对象:nil];如何在回放功能上使用鹰眼事件过滤器?
performSelector
cancelPreviousPerformRequestsWithTarget
[NSObject cancelPreviousPerformRequestsWithTarget:self];