在使用多个传递参数的延迟后,我使用以下代码执行选择器:
http://nifty-box.com/blog/2006/12/nsinvocation-cleans-code.html
它运作良好,但我需要扩展它以支持相当于:
[NSObject cancelPreviousPerformRequestsWithTarget:self]
(在这种情况下,目标不是自我,但我会相信_UFLatePerformer的一个实例)
有没有办法做到这一点,所以我的视图的解除分配可以杀死所有剩余的延迟性能请求?
答案 0 :(得分:2)
在Mac上你可以使用objc_setAssociatedObject,但iPhone上不存在。
所以基本上你需要某种管理器单例来保存这些引用,你传入一个NSObject并且它可以做你想要的。
当我做类似的事情时,我写了一个单例类,它接受了执行操作的请求,并启动了一个在执行操作时触发的计时器 - 那时我的经理类决定了相关请求是否是仍然有效,如果是这样就解雇了。因此我可以有效地取消一个计时器,并且还可以告诉管理员重置没有真正的计时器,它只是制作了一个新计时器,但是当旧计时器触发了它被请求执行的操作无效时。
所以基本上计时器只用一个请求ID调用单例,这导致了一个包含调用细节的字典条目。