1

当用户清空垃圾箱时,我的可可应用程序将如何收到通知。这是我到目前为止所拥有的:

 NSNotificationCenter *notCenter = [[NSWorkspace sharedWorkspace]
                                       notificationCenter];
    AppDelegate *mainController = [[AppDelegate alloc] init];

    [notCenter addObserver:mainController
                  selector:@selector(handleTrashEmpty)
                      name:NSWorkspaceRecycleOperation object:nil];

但是当用户清空垃圾箱时什么都没有出现。任何想法为什么此代码不起作用?

4

2 回答 2

1

第一种方式:

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

http://www.cocoadev.com/index.pl?UKKQueue

第二种方式:

如果 [folderList count]==0,请继续使用计时器检查,这意味着垃圾已清空。

NSError *error=nil;
NSString *path=[NSHomeDirectory() stringByAppendingPathComponent:@".Trash"];
NSArray *folderList=[[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];

第三种方式:

看~/.Trash,“com.apple.carbon.core.DirectoryNotification”在垃圾清空时发布。

于 2012-11-15T04:46:58.850 回答
0

NSWorkspaceRecycleOperation 根本不是通知,而是传递给 performFileOperation:source:destination:files:tag 的文件操作常量:


您使用 FSEvents api 来监控 /.Trashes。下面是一些示例代码: http ://subversion.assembla.com/svn/quotamonitormenu/QuotaMonitorMenu/branches/QuotaMonitorMenuFaculty/StatusItemController.m

于 2012-11-14T20:59:48.500 回答