【问题标题】:Coalescing NSNotifications合并 NSNotifications
【发布时间】:2016-07-21 08:21:48
【问题描述】:

NSNotificationQueues上使用合并通知来控制时间范围有什么办法吗?

我想合并例如下一秒,但据我了解可用的选项是立即或在下一次运行循环调用或“空闲时”..

任何其他方式,例如在更长的时间范围内合并?

我基本上是在寻找一种方法来收集一小段时间范围内的所有用户事件(如捏到缩放),并仅在用户明显停止缩放/等后才启动昂贵的操作。

【问题讨论】:

    标签: objective-c cocoa nsnotificationcenter nsnotifications nsnotification


    【解决方案1】:

    您可以在第一个通知到来时安排NSTimer。当下一个通知到来时,检查您的计时器实例变量。如果它不为零,则忽略通知。否则启动一个新的计时器。

    当计时器触发时,清除计时器实例变量并启动昂贵的操作。

    更简单的替代方法是使用performSelector:afterDelay:cancelPreviousPerformRequestsWithTarget:selector:object:。不过效果不一样。每次收到通知时,您将进一步延迟昂贵的操作。如果通知来得比您设置的延迟快,那么昂贵的操作将永远不会运行。

    【讨论】:

    • 对,所以您描述的是 100% 自定义实现。当然,这是一种方法——但与使用内置的合并通知机制无关..
    • 是的。我不认为内置的合并提供了“运行循环结束”或“空闲时”以外的任何东西。这对于大多数情况来说已经足够了。如果您希望每秒触发不超过一次昂贵的操作,您可能必须使用计时器来实现。
    猜你喜欢
    • 2013-02-19
    • 1970-01-01
    • 2011-08-17
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多