CDEvent 底层 FSEvent 标志总是 `isGenericChange`

CDEvent underlying FSEvent flags always `isGenericChange`

我正在使用这个(较旧的)框架:https://github.com/rastersize/CDEvents 来跟踪文件系统上的更改。

出于某种原因,标志总是 event.isGenericChange。在 FSEvent 级别,这将是 kFSEventStreamEventFlagNone(代码 0)。

也许这与框架较旧并且缺少更改的内容有关?我没有得到任何 build/test warnings/errors(通过 CocoaPods 安装)。

我通过委托使用此代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.events = [[CDEvents alloc] initWithURLs:@[[NSURL URLWithString:@"/Users/username/Desktop/"]]
                                        delegate:self
                                       onRunLoop:[NSRunLoop currentRunLoop]
                            sinceEventIdentifier:kCDEventsSinceEventNow
                            notificationLantency:((NSTimeInterval)0.25)
                         ignoreEventsFromSubDirs:NO
                                     excludeURLs:@[]
                             streamCreationFlags:kCDEventsDefaultEventStreamFlags];
}

- (void)URLWatcher:(CDEvents *)URLWatcher eventOccurred:(CDEvent *)event {
    NSLog(@"Event: %ld", (unsigned long)event.flags);
}

我尝试了所有操作(重命名、编辑、删除、创建、更改元数据、更改权限等),但总是 genericChange

通过添加 kFSEventStreamCreateFlagFileEvents 标志修复了它。因为我使用的是 CocoaPods,所以我宁愿不调整源代码,而不是使用这些手动标志放置 streamCreationFlags:kCDEventsDefaultEventStreamFlags

(kFSEventStreamCreateFlagUseCFTypes |
 kFSEventStreamCreateFlagWatchRoot |
 kFSEventStreamCreateFlagFileEvents)

我猜这与 Apple 过去某个时候所做的一些根本性改变有关。我现在获得了正确的标志以及文件的完整路径(不仅是目录)。