FSEvents在OS X Leopard上出现怪异现象

我想监视Mac上几个目录的文件系统事件。 我想要监视的目录可能会在运行时更改,因此使用FSEvent这里是我的应用程序的功能:

  • 创建一个全局回调函数来处理回调
  • 为每个文件夹创建一个新的FSEventStreamRef,将其与上面创建的回调相关联,并向eventStream添加一个上下文,以帮助我将更改回调与此文件夹相关联
  • 东西似乎主要工作,但我注意到一些古怪的时候,调用回调和'eventPaths'值发送到回调。

    例如,如果我为/ Foo和/ Bar创建了StreamRef,如果我在/ Bar中添加一个文件,我的回调几乎立即被调用,但eventPaths指向/ Foo中的一个位置,并且与StreamRef关联的上下文是也是/ Foo的。

    或者说,我正在监视/ Foo和/ Bar,然后删除/ Bar(通过正确停止和关闭StreamRef for / Bar)。 我现在为/ Fee创建一个新的FSEventStreamRef并与同一个回调关联。 我对/ Fee进行的任何更改都不会导致回调被调用,但对/ Foo的更改会继续提高回调。

    我在网上看到的任何示例或文档只会谈到监视单个文件夹。 我是如何将单个回调与多个FSEventStreamRefs关联起来的? 听起来这不应该是一个问题,但...

    有没有人以可靠运作的方式做过类似的事情,或者对于我可能尝试不同的方式提出任何建议?

    我试图做的一件事情就是使用一个FSEventStreamRef,并将CFArrayRef传递给我想要的所有路径,当我的监视列表更改关闭并重新创建一个新的FSEventStreamRef时 - 这更糟糕的是,以上。


    适用于我。 我模仿了这些特点:

  • 每个流一个路径
  • 每个路径/流一个上下文
  • 所有流都有一个回调
  • 你能否显示失败的代码?

    链接地址: http://www.djcxy.com/p/25361.html

    上一篇: FSEvents weirdness on OS X Leopard

    下一篇: How to determine if a file copy is completed using cocoa