我应该使用什么样的GCD队列或计时器来进行去抖动功能

时间:2015-07-26 12:56:48

标签: swift grand-central-dispatch

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

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

  • 主要
  • QOS_CLASS_USER_INTERACTIVE
  • QOS_CLASS_USER_INITIATED,
  • QOS_CLASS_UTILITY,QOS_CLASS_BACKGROUND

示例

How can I debounce a method call?

我还发现了一个使用计时器的例子 - 与封面下的GCD通话有什么不同或相同?

Search as you type Swift

1 个答案:

答案 0 :(得分:0)

GCD最适合制定一些即将完成的工作,在此之后您需要完成一些工作,之后不做任何调整。

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

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