Objective c 用户清空垃圾时的通知?

Objective c 用户清空垃圾时的通知?,objective-c,macos,cocoa,nsnotificationcenter,nsworkspace,Objective C,Macos,Cocoa,Nsnotificationcenter,Nsworkspace,当用户清空他们的垃圾时,我的cocoa应用程序将如何收到通知。这就是我到目前为止所做的: NSNotificationCenter *notCenter = [[NSWorkspace sharedWorkspace] notificationCenter]; AppDelegate *mainController = [[AppDelegate alloc] init]; [notCenter a

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

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

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

但是当用户清空他们的垃圾时,什么也没有显示。知道这段代码为什么不起作用了吗?

NSWorkspaceRecycleOperation根本不是通知,而是传递给performFileOperation的文件操作常量:源:目标:文件:标记:


您可以使用FSEvents api监视/.trash。 下面是一些示例代码:

NSWorkspaceRecycleOperation根本不是通知,而是传递给performFileOperation:source:destination:files:tag:


您可以使用FSEvents api监视/.trash。 下面是一些示例代码: 第一种方式:

您可以使用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”将在垃圾被清空时发布。

第一种方式:

NSError *error=nil;
NSString *path=[NSHomeDirectory() stringByAppendingPathComponent:@".Trash"];
NSArray *folderList=[[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];
您可以使用UKKQueue查看文件更改(空鞭打)通知:

第二种方式:

如果[folderList count]==0,表示垃圾桶已清空,请继续使用计时器进行检查

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


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

您是否实现了observeValueForKeyPath:method?@RamyAlZuhouri此处未涉及KVO您是否实现了observeValueForKeyPath:method?@RamyAlZuhouri此处未涉及KVO watch ~/.apple.carbon.core.DirectoryNotification”当垃圾被清空时发布。您的第二种方法不起作用。它总是说垃圾桶里没有任何东西。也许这是因为我在使用应用程序沙盒?那么如何在应用程序沙盒中实现这一点呢?看看~/.trash,“com.apple.carbon.core.DirectoryNotification”会在垃圾桶清空时发布。你的第二种方法不起作用。它总是说垃圾桶里没有任何东西。也许这是因为我在使用应用程序沙箱?那么如何在应用程序沙箱中实现这一点呢?
NSError *error=nil;
NSString *path=[NSHomeDirectory() stringByAppendingPathComponent:@".Trash"];
NSArray *folderList=[[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];