我想确保“最终”执行某些维护任务。例如,在我检测到某些资源可能不再用于缓存之后,我可能会调用:
[self performSelector:@selector(cleanupCache)withObject:nil afterDelay:0.5];
但是,我可能会在很多地方检测到这一点,我不想连续调用cleanupCache。我想整合多次调用cleanupCache,以便我们只定期调用cleanupCache。
这就是我想到的 - 这是最好的方法吗?
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(cleanupCache)object:nil]; [self performSelector:@selector(cleanupCache)withObject:nil afterDelay:0.5];
答案 0 :(得分:0)
而不是取消待处理的请求,如何保持跟踪?在计划请求时设置标志,并在清理运行时清除它。
答案 1 :(得分:0)
对于您想要的内容,没有真正的内置支持。如果这在你的程序中很常见,我会创建一个trampoline类来跟踪它是否已经被安排向给定对象发送消息。它不应该超过20行代码。