2012-03-21 60 views
1

我正在編寫一個應用程序,用戶可以從幾個列表中添加和刪除對象。爲了在應用程序崩潰時保存它們的列表,我希望每次更改時都將它們寫入磁盤。我目前的計劃是創建一個觀察列表的類,並在每次更改時都會收到通知,以便對它們進行存檔(列表和其中的所有對象都遵循NSCoding協議)。每次更改時都保存一個列表

需要注意的是,我事先知道會有多少個列表,並且這些列表的長度預計不會超過100個項目(大多數會是10-20個)。

這是實現我想達到的最好方法嗎?這應該甚至成爲我擔心的問題,還是僅僅在應用程序退出時才創建這些列表的紀念品是可以接受的?我還在考慮繼承NSMutableArray的子​​類來創建一個只要它發生變化就自行保存的類,以便任何一個類都不必知道應該保存的所有列表。

+2

修復崩潰可能比歸檔列表反覆更好... disk writing可能是昂貴的 – 2012-03-21 02:18:10

+0

我沒有發現任何特別的事故,我知道。我只是想解釋任何外部邊緣情況。如果手機斷電,或者用戶從外面關閉應用程序(即,雙擊該按鈕以查看最近使用的應用程序並從那裏關閉應用程序)等,則該應用程序是否通過正常的清理方法? – 2012-03-21 02:53:40

+1

在這種情況下,可能應該將數據保存到'applicationWillEnterBackground:'中,因爲每次按下home按鈕或鎖定按鈕或用戶切換到另一個應用程序時都會調用該數據。 – 2012-03-21 11:39:11

回答

2

首先,好的本能在這裏擔心用戶的數據。是的,當然你應該修理你的車禍。但即便如此,您應該首先保護用戶的數據。其次,你應該擔心用戶的電池壽命。所以你不應該經常打他們的閃存驅動器。

如果更改的數量不是很大,那麼我建議創建具有-(而不是-a NSMutableArray)的「list」對象。只要有人撥打addItem:以便始終保持同步,您就可以自己寫入磁盤。如果變化發生得非常快,那麼製作蹦牀非常容易,如果每秒鐘發生變化,每秒都會節省時間,但每秒不會超過一次。「 (如果這是任何問題,請添加評論,我會發布一些代碼或博客;這並不難)。

相關問題