在 NSNotificationQueues
上使用合并通知时有什么方法可以控制时间范围吗?
我想合并,例如下一秒,但据我了解可用的选项,它要么立即执行,要么在下一个运行循环调用时执行,或者“空闲时”执行。
任何其他方式,例如在更长的时间范围内合并?
我基本上正在寻找一种方法来收集小时间范围内的所有用户事件(例如捏合缩放),并仅在用户明显停止缩放/等之后才启动昂贵的操作。
最佳答案
您可以在第一个通知到来时安排一个NSTimer
。当下一个通知到来时,检查您的计时器实例变量。如果它非零,则忽略该通知。否则启动一个新的计时器。
当计时器触发时,清除计时器实例变量并启动昂贵的操作。
更简单的替代方法是使用 performSelector:afterDelay:
和 cancelPreviousPerformRequestsWithTarget:selector:object:
。但效果并不一样。每次收到通知时,您都会进一步延迟昂贵的操作。如果通知的发送速度快于您设置的延迟,则昂贵的操作将永远不会运行。
关于objective-c - 合并 NSNotifications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38498807/