9

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 秒の遅延があります。

これは予想される動作ですか?

およびのドキュメントの一部は、バッチ操作に使用するNSFileCoordinatorNSFilePresenter述べていますprepareForReadingItemsAtURLs:writingItemsAtURLs:options:error:byAccessor:が、バッチ操作を行わないと、このような長い遅延が発生するのは奇妙に思えます。

更新:これは読書でも起こります。

更新 2: これは、問題を再現するサンプル プロジェクトです。

更新 3:この API をアプリとその拡張機能間の調整に使用することは明らか悪い 考えです。しかし、疑問はまだ残っています。

4

2 に答える 2

3

NSFileCoordinatorReadingImmediatelyAvailableMetadataOnly場合によっては、読み取りとNSFileCoordinatorWritingContentIndependentMetadataOnly書き込みのオプションを使用できますか? このiOS8オプションが役立つようです。

于 2015-05-12T23:06:22.703 に答える