首页 文章

如何在Objective-C中合并延迟/延迟呼叫?

提问于
浏览
1

我想确保“最终”执行某些维护任务 . 例如,在我检测到某些资源可能不再用于缓存之后,我可能会调用:

[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];

2 回答

  • 0

    对你想要的东西没有真正的内置支持 . 如果这在你的程序中很常见,我会创建一个trampoline类来跟踪它是否已经被安排向给定对象发送消息 . 它不应该超过20行左右的代码 .

  • 0

    而不是取消待处理的请求,如何跟踪?在计划请求时设置标志,并在清理运行时清除它 .

相关问题