1

ストリームがありFSEvents、フォルダーを観察します。そのフォルダーにいくつかのファイルを追加すると、コールバック関数がそれをトリガーします。FSEventStreamEventFlagsしかし、フォルダーにファイルを追加したり、ファイルが変更されたことを確認したりするなど、定数を使用して特定のイベントを確認できると思いましたが、できません。これは、履歴が完了している場合にのみ作成できます。

void fileSystemEventCallback(ConstFSEventStreamRef streamRef, void *clientCallBackInfo, size_t numEvents, void *eventPaths, const FSEventStreamEventFlags eventFlags[], const FSEventStreamEventId eventIds[]) {


char **paths = eventPaths;
int i;
for (i = 0; i < numEvents; i++) {

    if (eventFlags[i]==kFSEventStreamEventFlagHistoryDone) {
        NSLog(@"history Done");
    }
}

他のすべてFSEventStreamEventFlagsの定数を確認しましたが、フォルダーへのファイルの追加、ファイルの変更、または削除をトリガーする定数はありません。私は今のところこの構造を使用しています:

 void fileSystemEventCallback(ConstFSEventStreamRef streamRef, void *clientCallBackInfo, size_t numEvents, void *eventPaths, const FSEventStreamEventFlags eventFlags[], const FSEventStreamEventId eventIds[]) {


char **paths = eventPaths;
int i;
for (i = 0; i < numEvents; i++) {

    if (eventFlags[i]==kFSEventStreamEventFlagHistoryDone) {
        NSLog(@"history Done");
    }
    else{
        NSLog(@"some activity in a folder");
    }


}

しかし、この構造を使用すると、ファイルなどを追加すると、複数のコールバックが返されます (つまり、複数の NSLog メッセージ「フォルダー内のアクティビティ」があります)。なんで?コールバックを 1 つだけ取得するにはどうすればよいですか?

4

0 に答える 0