我应该使用什么样的 GCD 队列或定时器来实现去抖动功能
what kind of GCD queue or timer should I use for a debounce function
刚刚学习 GCD,需要一些指导。我想设置一个去抖功能,这样我关注的用户的注销通知不会出现 5 分钟,以防用户重新登录。在这种情况下,我想延迟注销 UI 通知被添加到超时队列中,从现在开始执行 5 分钟 - 除非该用户重新登录,在这种情况下我会取消队列中的特定通知。 (注意这些示例中的用户不是我 - 当前登录的活动用户)。
我应该使用哪种类型的 GCD 队列?
- 主要
- QOS_CLASS_USER_INTERACTIVE
- QOS_CLASS_USER_INITIATED,
- QOS_CLASS_UTILITY,QOS_CLASS_BACKGROUND
示例
How can I debounce a method call?
我还找到了一个使用计时器的示例 - 这与幕后的 GCD 调用不同还是相同?
GCD
最适合即发即弃的任务,在这种情况下,您设置了一些要完成的工作,之后不做任何调整。
您想要的一个简单版本是使用 NSTimer
。如果用户登录,则使计时器无效。如果计时器存活并触发,您将发送通知。
如果出于某种原因,您需要在其中涉及额外的线程,请查看 NSOperationQueue
而不是 GCD
。这使您可以检查队列并应用取消逻辑。
刚刚学习 GCD,需要一些指导。我想设置一个去抖功能,这样我关注的用户的注销通知不会出现 5 分钟,以防用户重新登录。在这种情况下,我想延迟注销 UI 通知被添加到超时队列中,从现在开始执行 5 分钟 - 除非该用户重新登录,在这种情况下我会取消队列中的特定通知。 (注意这些示例中的用户不是我 - 当前登录的活动用户)。
我应该使用哪种类型的 GCD 队列?
- 主要
- QOS_CLASS_USER_INTERACTIVE
- QOS_CLASS_USER_INITIATED,
- QOS_CLASS_UTILITY,QOS_CLASS_BACKGROUND
示例
How can I debounce a method call?
我还找到了一个使用计时器的示例 - 这与幕后的 GCD 调用不同还是相同?
GCD
最适合即发即弃的任务,在这种情况下,您设置了一些要完成的工作,之后不做任何调整。
您想要的一个简单版本是使用 NSTimer
。如果用户登录,则使计时器无效。如果计时器存活并触发,您将发送通知。
如果出于某种原因,您需要在其中涉及额外的线程,请查看 NSOperationQueue
而不是 GCD
。这使您可以检查队列并应用取消逻辑。