2017-05-15 10 views
5

私が理解しているように、UIDocumentクラスはファイルへの保存されていない変更を追跡し、ファイルをロックして複数人でチェックアウトすることさえできません。しかし、ユーザーが強制的に保存せずにアプリケーションを終了するか、アプリがクラッシュするとどうなりますか?保存していない変更をUIDocumentに復旧させるにはどうすればよいですか?アプリが再起動したときに、最新の未保存の変更があるUIDocumentが再び開きます。変更する前に各ファイルの複製を作成し、ユーザーが変更を保存するまで一時複製を変更する必要がありますか?あるいは、Appleはより簡単な実装を提供していますか?また、Dataのファイル内容とUIDocumentundoManagerのエンコードと保管を定期的にキャッシュとして考慮しました。それは働くだろうか?UIDocument保存されていない変更をアプリケーションでクラッシュ/強制終了する

答えて

1

UIDocumentおよびUIManagedDocumentは、ドキュメントが変更された場合にtrueを返す機能を呼び出すオートマチックチェンジトラッキングを実行し、他のシステム制約を尊重して変更をディスクに保存します。ファイル)。 基本クラスのメソッドをオーバーライドしないと、Appleが保存する方法は非常に安全です。保存操作がトリガされると、Appleは一時ファイルに保存し、保存が正常に行われると元のファイルの名前の変更と削除が完了します(IIRCの名前変更/削除はアトミックまたはアトミックに近い)。保存操作によって、ファイルシステムに破損したファイルがすべてのケースの99.99%を残すことはないと想定できます。

アップルトリガーは、特定のポイント(バックグラウンドに切り替えたアプリ、他のプロセスがファイルにアクセスしようとする前など)でバックグラウンドで操作を保存しますが、何が起こったのか明確なステートメントは見つかりませんでしたアプリケーションが強制終了したとき。

論理と常識によると、アプリケーションを強制終了すると、現在のドキュメントの状態に保存されません。強制終了のために手動で「クイックセーブ」を実装することは、技術的に実現可能ではないかもしれません。 UIDocumentのような定期的なバックグラウンドセーブ操作が最良の戦略かもしれません。

UNDOマネージャの状態の保存について:これは、UIDocumentを保存する場合と同じ技術的な問題です。アプリケーションを強制終了するように指示するイベントや何もありません。

Apple Documentationをお読みください。非常に長いですが、プロセスをより詳細に説明しています。アップルが課す戦略を実装することが私のアドバイスです。これらの戦略は健全で、アップルのエコシステムの多くのアプリケーションやユーザーのために働きます。さらに、実装コストの削減と自動化の改善(Appleが実装を更新したとき)があります。

+0

あなたの推奨事項を除いて - 保存することを選択するまで、ユーザーが文書の保存されていない変更を保存できるようにするにはどうすればよいですか?コンピュータがシャットダウンした場合と同じように、 –

関連する問題