0

iOS デバイス用の既存のデモ写真アプリケーションに、ハードディスク ベースの復元機能をコーディングしようとしています。これは、アプリケーションの再起動や予期しないクラッシュなどの後でも、ユーザーが最後に適用された効果とすべてを復元できるようにすることを目的としています。

1 つの画像ファイル (最新の効果が適用されたもの) を NSCachesDirectory に保存しています。

     NSData* data = UIImagePNGRepresentation(image);
    [data writeToFile:[self getFileAtIndex:getPath] atomically:YES];

回復オプションに進むと、このパスに保存されたファイルは次を使用して回復されます。

    image = [[UIImage imageWithContentsOfFile:[self getFileAtIndex:getPath]]retain];

コードはテスト デバイス (iPhone 4s) で正常に動作しています。しかし、どういうわけか、これが復元関数をコーディングするためのベスト プラクティスであるかどうかは疑問です。

実際のアプリに移ると、NSCachesDirectory に保存されていた場合、iCloud にバックアップされると思いますか? 他のアプリと競合する可能性はありますか?

複数のアプリが同時にアクセスする場合、NSCachesDirectory ディレクトリはどの程度正確に管理されますか?

これを行うためのベストプラクティスを知りたいです。

ヘルプ/コメントしてください。

4

1 に答える 1

0

Bonjour さんがコメントで述べたように、iOS ではすべてのアプリが個別のファイル システムを持っているため、他のアプリと競合することはありません。

キャッシュ ディレクトリは iCloud にバックアップされないため、キャッシュ ディレクトリ内のファイルを起動後も維持することに依存しないでください。一時ファイルのみにキャッシュ ディレクトリを使用する必要があります。1 つのセッションでのみ復元を許可する場合は、キャッシュ ディレクトリを使用しても問題ありませんが、複数の起動にまたがって復元を許可する場合は、それらを library/documents ディレクトリに保存する必要があります。ただし、ドキュメント ディレクトリはユーザーのクラウド ストレージのスペースを占有するため、Apple はドキュメント ディレクトリにファイルを保存するための厳格なレビュー ポリシーを持っていることに注意してください。

于 2013-03-25T08:52:28.010 に答える