1

我正在使用以下代码在使用多个传递参数的延迟后执行选择器:

http://nifty-box.com/blog/2006/12/nsinvocation-cleans-code.html

它工作得很好,但我需要扩展它以支持相当于:

[NSObject cancelPreviousPerformRequestsWithTarget:self]

(在这种情况下,目标不是自我,而是我相信的 _UFLatePerformer 的一个实例)

有没有办法做到这一点,所以我的视图的释放可以杀死所有剩余的延迟性能请求?

4

1 回答 1

2

在 Mac 上,您可以使用 objc_setAssociatedObject,但在 iPhone 上不存在。

所以基本上你需要某种管理器单例来为你保存这些引用,你传入一个 NSObject 并且它会做你想要的。

当我做类似的事情时,我编写了一个单例类,它接受执行操作的请求,并启动了一个计时器,该计时器在要完成操作时触发——当时我的经理类决定所讨论的请求是否仍然有效,如果是这样,就解雇了行动。因此,我可以有效地取消计时器,并且还可以告诉经理重置计时器,但实际上并没有,它只是创建了一个新计时器,但是当旧计时器触发它请求执行的操作时,它是无效的。

所以基本上计时器只是用一个请求 ID 调用单例,这导致一个包含调用详细信息的字典条目。

于 2010-02-07T05:42:20.160 回答