如何捕获NSWorkspace是否执行了文件操作通知?

时间:2012-09-13 15:23:02

标签: objective-c cocoa notifications nsworkspace

我试图在文件操作执行后获得回调,但我无法捕获NSWorkspaceDidPerformFileOperationNotification发布。

[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finderDidFileOperation:) name:NSWorkspaceDidPerformFileOperationNotification object:[NSWorkspace sharedWorkspace]];
[[NSWorkspace sharedWorkspace] performFileOperation:fileOp source:source destination:item.fullPath files:objects tag:&tag];
  

对象:无

也没有用,

[[NSWorkspace sharedWorkspace] addObserver:self forKeyPath:NSWorkspaceDidPerformFileOperationNotification options:NSKeyValueObservingOptionNew context:nil];

我做错了什么?

1 个答案:

答案 0 :(得分:3)

我认为这里的关键是NSWorkspace将通知发布到其通知中心,而不是全局默认通知。来自the docs

  

在此方法返回之前,它会将NSWorkspaceDidPerformFileOperationNotification发布到NSWorkspace对象的通知中心。

尝试使用该通知中心注册通知,如下所示:

[[[NSWorkspace sharedWorkspace] notificationCenter] 
    addObserver:self 
    selector:@selector(finderDidFileOperation:) 
    name:NSWorkspaceDidPerformFileOperationNotification 
    object:[NSWorkspace sharedWorkspace]];