当用户清空垃圾时,如何通知我的Cocoa应用程序?

当用户清空垃圾时,如何通知我的Cocoa应用程序?,cocoa,notifications,recycle-bin,Cocoa,Notifications,Recycle Bin,我的应用程序将一些文件放入垃圾箱,但也实现了撤消以再次将其拉出。我需要知道用户是否清空垃圾,这样我才能清空撤销堆栈 我是否需要监视文件系统事件来实现这一点,或者有更简单的方法吗?您可能最终不得不观看~/.Trash,但当垃圾被清空时会发布一条通知。它的名字是“com.apple.carbon.core.DirectoryNotification”(在其他时候也会发布),但它的用户信息中似乎没有任何内容。但是,它确实有一个字符串作为对象,因此可能包含一些相关信息。我的快速测试似乎表明它不是。(它看

我的应用程序将一些文件放入垃圾箱,但也实现了撤消以再次将其拉出。我需要知道用户是否清空垃圾,这样我才能清空撤销堆栈


我是否需要监视文件系统事件来实现这一点,或者有更简单的方法吗?

您可能最终不得不观看~/.Trash,但当垃圾被清空时会发布一条通知。它的名字是
“com.apple.carbon.core.DirectoryNotification”
(在其他时候也会发布),但它的用户信息中似乎没有任何内容。但是,它确实有一个字符串作为对象,因此可能包含一些相关信息。我的快速测试似乎表明它不是。(它看起来像一个字符串,类似于
“FNObject 555279-101”

另一个选项是使用
FNSubscribe
FNSubscribeByPath
。通知不会确切地告诉您发生了什么,只会告诉您订阅的目录发生了什么。

您可以使用它来查看文件更改(空击)通知:

谢谢。我在网站上找到了一个使用这个的例子。一旦我知道可以进行更改,我就可以检查垃圾箱是否为空并做出适当的响应。还要注意的是,垃圾箱不仅位于
~/.trash
;外部驱动器上的文件被移动到
/path/to/mountpoint/Trashes/uid/