2012-03-21 8 views
1

私は、ユーザーが複数のリストにオブジェクトを追加したり削除したりできるアプリケーションを作成しています。アプリケーションがクラッシュしてもリストを保存するために、変更するたびにディスクに書きたいと思っています。私の現在の計画は、リストを観察し、変更するたびに通知するクラスを作成することです(リストとその中のすべてのオブジェクトはNSCodingプロトコルに従います)。変更するたびにリストを保存する

私はあらかじめいくつのリストがあるのか​​知っていますが、これらのリストは100アイテム以上の長さに成長するとは予想されません(たいていは10-20となります)。

私が達成したいものを達成するための最良の方法ですか?これは私が心配している問題であっても、アプリケーションが終了したときにこれらのリストのメモを作成するだけでよいのでしょうか? NSMutableArrayをサブクラス化して、変更するたびに保存するクラスを作成することも検討していたため、保存するすべてのリストを認識する必要がありません。

+2

リストを何度もアーカイブするよりもクラッシュを修正するほうがいいかもしれません。高価になる可能性があります –

+0

私が知っている特にクラッシュはありません。私はちょうどあらゆる外縁の場合を説明しようとしています。携帯電話の電源が切れた場合、またはユーザーが外部からアプリを閉じると(最近使用したアプリを表示するためにボタンをダブルクリックしてそこからアプリを閉じるなど)、アプリは通常のクリーンアップメソッドを実行しますか? –

+1

その場合、ホームボタンやロックボタンを押すたびに呼び出されるか、ユーザーが別のアプリケーションに切り替えるため、データを 'applicationWillEnterBackground:'に保存するだけでよいでしょう。 –

答えて

2

まず、ユーザーのデータを気にするのは良い本能です。はい、もちろん、クラッシュを修正する必要があります。しかし、それでも、ユーザーのデータを最優先に保護する必要があります。第二に、ユーザーの電池寿命が心配されるべきです。だからあなたはフラッシュドライブをあまり頻繁に打つべきではありません。

変更の数が大きければ、NSMutableArray(-NSMutableArrayではなく)の「リスト」オブジェクトを作成することをおすすめします。いつも同期するために誰かがaddItem:を呼び出すといつでもあなた自身をディスクに書くことができます。変更が非常に迅速に起きた場合、変更があった場合には毎秒保存するトランポリンを作成するのはかなり簡単ですが、1秒に1回以上行うことはありません。 (もし何か問題があれば、コメントを追加してコードを投稿するか、ブログに貼り付けます;それは難しくありません)

関連する問題