Use FSEvents no aplicativo sandboxed
Estou tentando usar o FSEvents no meu aplicativo de área restrita para monitorar alguns diretórios. Eu implementei a seguinte classe:
@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");
}
O problema é que "asd" nunca é impresso (ou seja, a função de retorno de chamada nunca é chamada). Quando desativo o "Ativar sandbox de aplicativo" no Resumo do meu destino principal no Xcode, o retorno de chamada é chamado. Estou fazendo algo errado? O único direito que concedi ao aplicativo em área restrita é o acesso de leitura / gravação a arquivos selecionados pelo usuário.