用户清空垃圾时的通知?

时间:2012-11-14 20:43:05

标签: objective-c macos cocoa nsnotificationcenter nsworkspace

当用户清空垃圾箱时,我的cocoa应用会如何收到通知。这就是我到目前为止所做的:

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

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

但是当用户清空他们的垃圾时什么都没有出现。有什么想法为什么这个代码不起作用?

2 个答案:

答案 0 :(得分:1)

第一种方式:

您可以使用UKKQueue观看文件更改(空捶打)通知:

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”。

答案 1 :(得分:0)

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


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