FSEvents回调函数事件标志出现问题

时间:2013-08-09 22:20:13

标签: objective-c macos events callback fsevents

我有一个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消息“文件夹中的某些活动”),当我添加文件或其他东西时。为什么?如何才能获得一次回调?

0 个答案:

没有答案