1

ユーザーがゴミ箱を空にしたときに、私のココア アプリはどのように通知を受け取りますか。これは私がこれまでに持っているものです:

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

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

しかし、ユーザーがゴミ箱を空にしても何も表示されない場合。このコードが機能しない理由はありますか?

4

2 に答える 2

1

最初の方法:

UKKQueue を使用して、ファイル変更 (空のスラッシュ) 通知を監視できます。

http://www.cocoadev.com/index.pl?UKKQueue

2 番目の方法:

[folderList count]==0 の場合はタイマーでチェックし続けます。これは、ゴミ箱が空になったことを意味します。

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

3 番目の方法:

watch ~/.Trash、ゴミ箱を空にすると「com.apple.carbon.core.DirectoryNotification」が投稿されます。

于 2012-11-15T04:46:58.850 に答える
0

NSWorkspaceRecycleOperation はまったく通知ではなく、ファイル操作定数として performFileOperation:source:destination:files:tag に渡されます。


FSEvents API を使用して /.Trashes を監視します。サンプルコードは次のとおりです: http://subversion.assembla.com/svn/quotamonitormenu/QuotaMonitorMenu/branches/QuotaMonitorMenuFaculty/StatusItemController.m

于 2012-11-14T20:59:48.500 に答える