AppleWatch アプリから安全にファイル IO を実行できるように、アプリでセットアップしてNSFileCoordinator
います。NSFilePresenter
私のコードには、ファイルに数回連続して書き込む場所がいくつかあります。これはそれ自体が問題であり、修正に取り組んでいますが、その過程で奇妙な動作に気付いています。
書き込みを次のようにラップします。
//In a class that implements NSFilePresenter:
NSFileCoordinator *coord = [[NSFileCoordinator alloc]initWithFilePresenter:self];
[coord coordinateWritingItemAtURL:self.presentedItemUrl options:0 error:nil byAccessor:^(NSURL *url)
{
//do my writing here using CFWriteStreamRef or NSOutputStream
}];
最初の書き込みでは、書き込みブロックは 1 ミリ秒以内に発生します。ただし、その後、呼び出しcoordinateWritingItemAtURL
と書き込みブロックの実行の間に約 0.5 秒の遅延があります。
これは予想される動作ですか?
およびのドキュメントの一部は、バッチ操作に使用するNSFileCoordinator
とNSFilePresenter
述べていますprepareForReadingItemsAtURLs:writingItemsAtURLs:options:error:byAccessor:
が、バッチ操作を行わないと、このような長い遅延が発生するのは奇妙に思えます。
更新:これは読書でも起こります。
更新 2: これは、問題を再現するサンプル プロジェクトです。
更新 3:この API をアプリとその拡張機能間の調整に使用することは明らかに悪い 考えです。しかし、疑問はまだ残っています。