タイマーの実行を避けたいのでFSEventStreamCreate
、データベースファイルが変更されたときにアプリケーションにアドバイスするためにを使用したいと思います。チェックするパスの配列に含めることで、アプリケーションで必要な結果が得られますNSHomeDirectory()
が、これはホームディレクトリが非常にビジーであるためです。私が除外した場合、NSHomeDirectory()
または何らかの理由でマシンが私のようにビジーではなかった場合、アプリケーションはデータベースファイルへの変更を十分な頻度でトラップしませんでした。
次のコードは、デバッグセッションを開始するたびに1回だけ機能します。
-(void) initializeEventStream
{
NSString *databaseDirectoryPath = @"/Library/FileMaker Server/Data/Databases/development";
NSString *homeDirectoryPath = NSHomeDirectory() ;
NSArray *pathsToWatch = [NSArray arrayWithObjects:databaseDirectoryPath, homeDirectoryPath, nil];
void *appPointer = (void *)self;
FSEventStreamContext context = {0, appPointer, NULL, NULL, NULL};
NSTimeInterval latency = 3.0;
self.fileSystemEventStreamRef = FSEventStreamCreate(NULL,
&fsevents_callback,
&context,
(CFArrayRef) pathsToWatch,
[self.lastEventIDNumber unsignedLongLongValue],
(CFAbsoluteTime) latency,
kFSEventStreamCreateFlagUseCFTypes
);
FSEventStreamScheduleWithRunLoop(self.fileSystemEventStreamRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
FSEventStreamStart(self.fileSystemEventStreamRef);
}
FSEventStreamCreate
レスポンシブにする方法に関するアイデア
NSString *databaseDirectoryPath = @"/Library/FileMaker Server/Data/Databases/development";
?