Есть пара примеров использования FSEvent для прослушивания изменений в файловой системе.
Как отслеживать изменения файловой системы MAC - kFSEventStreamCreateFlagWatchRoot
и
странность FSEvents в OS X Leopard
При создании события с FSEventStreamCreate
кажется, что все они отлично передают элемент обратного вызова. Никаких параметров или чего-то еще, просто &feCallback
. В основном кажется, что они передают переменную, а не функцию, если это имеет смысл.
Но я получаю ошибку Use of Undeclared identifier
, когда пытаюсь это сделать. Что дает?
FSEventStreamRef stream = FSEventStreamCreate(NULL,
&feCallback, // what does '&' mean? Why are no parameters passed?
&cntxt,
pathsToWatch,
kFSEventStreamEventIdSinceNow,
1,
kFSEventStreamCreateFlagWatchRoot );
а затем используйте функцию обратного вызова:
static void feCallback(ConstFSEventStreamRef streamRef,
void* pClientCallBackInfo,
size_t numEvents,
void* pEventPaths,
const FSEventStreamEventFlags eventFlags[],
const FSEventStreamEventId eventIds[])
{
NSLog(@"The file changed!");
}
Мне бы хотелось получить пример кода, чтобы заставить работать вспомогательный объект с открытым исходным кодом: https://bitbucket.org/boredzo/fs-notifier/overview
Но то же самое. Он имеет метод:
- (id) initWithCallback:(FSEventStreamCallback)newCallback path:(NSString *)newPath;
и я не могу передать ему newCallback
из-за ошибки, описанной выше.