我遇到了macOS框架FSEvents的问题:当我打电话给FSEventStreamCreate
并将kFSEventStreamEventIdSinceNow
传递给"因为"参数,我仍然会收到kFSEventStreamEventFlagItemCreated
个事件,这些事件是在创建和安排流之前几秒钟生成的文件。
NSArray* paths = createDummyFilesOnFileSystem();
sleepForFiveSeconds();
CFRunLoopRef runLoop = ...;
FSEventStreamContext context = ...;
CFTimeInterval latency = 0.5;
FSEventStreamCreateFlags streamCreateFlags =
kFSEventStreamCreateFlagUseCFTypes |
kFSEventStreamCreateFlagNoDefer |
kFSEventStreamCreateFlagWatchRoot |
kFSEventStreamCreateFlagFileEvents;
FSEventStreamRef stream = FSEventStreamCreate(NULL,
&fsEventCallback,
&context,
(__bridge CFArrayRef) paths,
kFSEventStreamEventIdSinceNow,
latency,
streamCreateFlags);
FSEventStreamScheduleWithRunLoop(stream, runLoop, kCFRunLoopDefaultMode);
FSEventStreamStart(stream);
我有什么办法可以避免收到先前创建的文件的kFSEventStreamEventFlagItemCreated
通知,或者我可以通过任何方式过滤这些文件(例如通过查看其他标志)?我已经尝试过最初刷新流并将FSEventsGetCurrentEventId()
传递给since参数,但这也无济于事。
谢谢!