我应该使用什么样的 GCD 队列或定时器来实现去抖动功能

what kind of GCD queue or timer should I use for a debounce function

刚刚学习 GCD,需要一些指导。我想设置一个去抖功能,这样我关注的用户的注销通知不会出现 5 分钟,以防用户重新登录。在这种情况下,我想延迟注销 UI 通知被添加到超时队列中,从现在开始执行 5 分钟 - 除非该用户重新登录,在这种情况下我会取消队列中的特定通知。 (注意这些示例中的用户不是我 - 当前登录的活动用户)。

我应该使用哪种类型的 GCD 队列?

示例

How can I debounce a method call?

我还找到了一个使用计时器的示例 - 这与幕后的 GCD 调用不同还是相同?

GCD 最适合即发即弃的任务,在这种情况下,您设置了一些要完成的工作,之后不做任何调整。

您想要的一个简单版本是使用 NSTimer。如果用户登录,则使计时器无效。如果计时器存活并触发,您将发送通知。

如果出于某种原因,您需要在其中涉及额外的线程,请查看 NSOperationQueue 而不是 GCD。这使您可以检查队列并应用取消逻辑。