Используйте FSEvents в изолированном приложении

Я пытаюсь использовать FSEvents в моем изолированном приложении для мониторинга некоторых каталогов. Я реализовал следующий класс:

@implementation SNTracker

- (id)initWithPaths:(NSArray *)paths {
    self=[super init];
    if (self) {
        trackedPaths=paths;
        CFTimeInterval latency=1.0;
        FSEventStreamContext context={0,(__bridge void *)self,NULL,NULL,NULL};
        FSEventStreamRef eeventStream=FSEventStreamCreate(kCFAllocatorDefault,&callback,&context,(__bridge CFArrayRef)trackedPaths,kFSEventStreamEventIdSinceNow,latency,kFSEventStreamCreateFlagUseCFTypes|kFSEventStreamCreateFlagWatchRoot|kFSEventStreamCreateFlagFileEvents);
        FSEventStreamScheduleWithRunLoop(eeventStream,[[NSRunLoop mainRunLoop] getCFRunLoop],kCFRunLoopDefaultMode);
        FSEventStreamStart(eeventStream);
    }
    return self;
}

static void callback(ConstFSEventStreamRef streamRef,void *clientCallBackInfo,size_t numEvents,void *eventPaths,const FSEventStreamEventFlags eventFlags[],const FSEventStreamEventId eventIds[]) {
    NSLog(@"asd");
}

Проблема в том, что "ASD» никогда не печатается (т.е. функция обратного вызова никогда не вызывается). Когда я отключаюВключить App Sandboxing " в Сводке моей главной цели в XCode вызывается обратный вызов. Я делаю что-то неправильно? Единственное право я "В изолированном приложении есть доступ на чтение и запись к выбранным пользователем файлам.

 Mecki19 февр. 2013 г., 13:46
И пользователь выбрал путь, который вы пытаетесь отслеживать через FSEvent? Так как, если он нет, ты выигралНе разрешать доступ к нему и, следовательно, также не контролировать его.
 Peter Hosey19 февр. 2013 г., 20:17
@Nickkk: Вы, вероятно, все равно должны это называть, но не сразу после начала мониторинга.dealloc это, наверное, хорошее место.
 Nickkk20 февр. 2013 г., 10:17
Да ты прав. Спасибо :-)
 Nickkk19 февр. 2013 г., 14:35
Вы'мое спасение! Я звонил[myURL startAccessingSecurityScopedResource] но также[myURL stopAccessingSecurityScopedResource]Поэтому удаление последнего вызова решает мою проблему. Пожалуйста, добавьте свой комментарий в качестве ответа, чтобы я мог поставить галочку, как решено :-)

Ответы на вопрос(1)

Решение Вопроса

И пользователь выбрал путь, который вы пытаетесь отслеживать через FSEvent? Так как, если он нет, ты выигралНе разрешать доступ к нему и, следовательно, также не контролировать его. Путь можно отслеживать только до тех пор, пока у вас есть доступ к нему.

Ваш ответ на вопрос