[Примечание: название может быть менее точным, я не знал, как еще его сформулировать]
По какой-то причине readFBackground NSFileHandle не работало, поэтому я прибегнул к SCEvents, оболочке Какао вокруг FSEvents API в Mac OS X. У меня есть отдельный класс с именем "EventListener", который обрабатывает все вещи SCEvents.
Он имеет следующие методы:
- (void)setupEventlistener
{
SCEvents *events = [SCEvents sharedPathWatcher];
[events setDelegate:self];
NSMutableArray *paths = [NSMutableArray arrayWithObject:NSHomeDirectory()];
NSMutableArray *excludePaths = [NSMutableArray arrayWithObject:[NSHomeDirectory() stringByAppendingString:@"/Downloads"]];
[events setExcludedPaths:excludePaths];
[events startWatchingPaths:paths];
}
- (void)pathWatcher:(SCEvents *)pathWatcher eventOccurred:(SCEvent *)event
{
NSLog(@"%@", event);
}
(я получил эти методы непосредственно из примера приложения SCEvents, как только я получу это, я планирую изменить его для своих собственных целей)
Затем в методе applicationDidFinishLaunching моего основного класса делегата приложения у меня есть это:
EventListener *events = [[EventListener alloc] init];
[events setupEventlistener];
Что инициализирует слушателя. Теперь, после его выделения и вызова класса setupEventListener, все работает нормально. Изменения внутри домашней папки регистрируются в консоли отладчика, как и должно быть. У меня есть другой метод под названием format: он запускает некоторые сценарии оболочки. Проблема заключается в том, что при запуске метода format прослушиватель событий перестает работать. Любые изменения в домашней папке НЕ регистрируются. Эта проблема возникает только с форматом: метод. Со всеми другими методами прослушиватель событий работает нормально.
Я не уверен, в чем проблема. Спасибо