2012-09-13 2 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에서 :

이 방법을 반환하기 전에, 그것은 NSWorkspace 객체의 알림 센터에 NSWorkspaceDidPerformFileOperationNotification을 게시합니다.

는 다음과 같이, 해당 알림 센터 알림에 등록하십시오 :

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

내가 생각'[NSWorkspace는 notificationCenter]'으로 작동하지 않습니다'notificationCenter'는 인스턴스 방법이다. 아마도 [[[NSWorkspace sharedWorkspace] notificationCenter]'에 등록해야합니다. –

+0

@AnalogFile 좋은 캐치 ... 예를 업데이트했습니다. – highlycaffeinated

+0

대단히 감사합니다! 그것은 내 문제를 해결했다. – Akki