2011-06-27 63 views
2

任何人都可以推薦一種使用NSKeyArchiver將數據附加到檔案的高效內存方法嗎?iOS:添加到檔案

我有一個數組收集對象,並使它們作爲內存中的緩存提供給應用程序。爲了避免吃越來越多的內存,我想每隔一段時間將這個數組存儲到一個文件中,保留一個緩存文件(而不是創建單獨的文件)。要做到這一點

一個辦法是取消歸檔退出的文件到tempArray,比現有陣列中添加項目到它:

[tempArray addObjectsFromArray:array];

,然後存檔數組:

[NSKeyedArchiver archiveRootObject:tempArray toFile:file];

這種方法可以勝過它自己的目的,因爲在歸檔新數據之前,您必須將整個檔案文件讀取到內存中。

任何人都可以推薦更優雅的解決方案?

回答

0

我不認爲這是可能的,至少與NSKeyedArchiver。由於每個範圍層次結構中的鍵must be unique,因此無法保證不先讀取存檔。如果您剛插入帶有新歸檔對象的節點,並且該節點的鍵已存在於歸檔中較早的位置,則結果將爲損壞的歸檔。很顯然,如果你自己編寫NSCoder協議的實現,你可以讓它工作,不過你喜歡。編寫一個NSCoder是非trival然而。