我在使用 macOS 框架 FSEvents 时遇到问题:当我调用FSEventStreamCreate
并传递kFSEventStreamEventIdSinceNow
“since”参数时,我仍然会收到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);
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来避免收到kFSEventStreamEventFlagItemCreated
之前创建的那些文件的通知,或者我可以通过任何方式过滤掉这些文件(例如通过查看其他标志)?我已经尝试最初刷新流并传递FSEventsGetCurrentEventId()
since参数,但这也没有帮助。
谢谢!
归档时间: |
|
查看次数: |
191 次 |
最近记录: |