2

我一直在使用之前知道NSMetaDataQuery用户何时截取屏幕截图并且它工作正常。但是在我开始时我只会收到通知,而在更新时我没有收到任何通知。我什至用过and 。无法弄清楚 Apple 发生了什么变化以及如何使其发挥作用。sandboxmacOS10.1310.13NSMetaDataQueryNSURL startAccessingSecurityScopedResourcestopAccessingSecurityScopedResource

- (void)setScreenshotMonitoring {

    // Retrieve Scoped Bookmark url from defaults
    NSURL *url = [CoreUtils getScreenshotBookmarkUrl];
    [url startAccessingSecurityScopedResource];

    _query = [[NSMetadataQuery alloc] init];
    [_query setSearchScopes:@[url]];
    [_query setDelegate:self];
    [_query setPredicate:[NSPredicate predicateWithFormat:@"kMDItemIsScreenCapture = 1"]];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenshotQueryUpdated:) name:NSMetadataQueryDidStartGatheringNotification object:_query];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenshotQueryUpdated:) name:NSMetadataQueryDidUpdateNotification object:_query];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinish:) name:NSMetadataQueryDidFinishGatheringNotification object:_query];

    // Make sure Query starts on main thread
    runOnMainQueueWithoutDeadlocking(^{
        [_query startQuery];
    });
    [url stopAccessingSecurityScopedResource];
}

但是screenshotQueryUpdated,仅在拍摄新屏幕截图queryDidFinish时才调用。startQuery

4

0 回答 0