macos - 如何将 kFSEventStreamEventFlagEventIdsWrapped 与 FSEvents 一起使用?

标签 macos cocoa fsevents

我试图了解如何将 kFSEventStreamEventFlagEventIdsWrapped 事件标志与 FSEvents 结合使用。

根据文档,当事件 ID 计数器回绕时,该标志会发送到已注册的实例,从而使先前的事件 ID 过时。

现在让我们想象以下场景:

  • 我在应用程序中注册了 FSEvents
  • 处理完 FSEvents 后(例如,我的应用程序退出),我会保存处理事件时遇到的最后一个事件 ID,以便能够重播该 ID 的更改;
  • 当我的应用程序未运行时,事件 ID 计数器会回绕。

我的问题是:我怎么知道柜台已经被绕好? (因此需要我重新扫描整个目录结构。)

最佳答案

我现在直接从 Apple 得到了答案。

这个场景一开始就是错误的。保存最后处理的事件 ID 时,还必须保存事件流的 UUID。事件 ID 仅对给定事件流有效,该事件流由其 UUID 标识(请参阅FSEventsCopyUUIDForDevice())。

每当事件 ID 计数器回绕时,就会生成一个新的事件流 UUID。因此,如果您在事件 ID 计数器结束后重新启动应用程序,您存储的最后一个事件 ID 将不再有效,并且您会知道,因为事件流 UUID 不会相同.

如果您遇到 kFSEventStreamEventFlagEventIdsWrapped 标志,则意味着计数器在您的应用程序打开时回绕。然而,没有什么特别要做的。如果您想保存最后一个事件 ID,您应该确保获取新的事件流 UUID。

关于macos - 如何将 kFSEventStreamEventFlagEventIdsWrapped 与 FSEvents 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840874/

相关文章:

python - MAC OS ImportError : pycurl: libcurl link-time version (7. 37.1) 早于编译时版本 (7.43.0)

macos - OSX 服务菜单条目的本地化不适用于简体中文

iphone - 类实现中的私有(private)属性(property)声明?

cocoa - 如何在 cocoa 中获取文件夹更改通知(文件夹观察器)

objective-c - FSEvents:获取 fsevents_callback 内的受监控路径

python - 在 Mac OS X 10.6 Snow Leopard 上安装 Mercurial

xcode - 如何在我的 WKWebView 中关闭 OS X 的智能引号替换?

iphone - 如何从 UIAlertView 获取输入?

objective-c - Xcode4 UML 插件?

vue.js - Nuxt.js:fsevents 不是构造函数