2012-09-13 30 views
3

我試圖獲得執行文件操作後的回調,但我無法捕獲NSWorkspaceDidPerformFileOperationNotification發佈。如何捕獲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]; 

了。

我做錯了什麼?

回答

3

我認爲這裏的關鍵是NSWorkspace將通知發佈到其通知中心,而不是全局默認通知。從the docs

此方法返回之前,員額NSWorkspaceDidPerformFileOperationNotification到NSWorkspace對象的通知中心。

嘗試註冊與該通知中心的通知,而不是像這樣:

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

我認爲'[NSWorkspace通知中心]'將無法正常工作'notificationCenter'是一個實例方法。應該可以用'[[NSWorkspace sharedWorkspace] notificationCenter]'註冊。 –

+0

@AnalogFile好趕上...我更新了示例 – highlycaffeinated

+0

非常感謝!它解決了我的問題。 – Akki