2012-04-18 42 views
1

我想使用NSCoding保存/加載我的類的實例。每個班級應該有一個單獨的緩存時間/時間來生活。當應用程序啓動時,我希望我的類的實例可以從緩存中加載,如果它未過期或以其他方式正常創建的話。使用NSCoding緩存文件的框架

這個問題必須被解決了數百次....

是否有這樣一個良好的框架,或者我應該推出自己的?

回答

1

需要明確的是,你可以保存或裝載對象,不,使用NSCoding

我不知道這樣做的框架。您可以使用文件修改時間作爲緩存時間,也可以將其保留在單獨的數據庫中。如果它不是很多不同的類,則可以使用NSUserDefaults作爲單獨的數據庫。每個班級只需編碼即可知道自己的生活時間。

+0

我結束了自己的解決方案。 https://gist.github.com/2414490 – Robert 2012-04-18 15:54:52

2

也許你可以試試 NSCache NSCache不符合NSCoding協議,所以你不能存檔/取消存檔緩存。

NSCache對象是類似集合的容器或緩存,它存儲鍵值對,類似於NSDictionary類。開發人員經常會使用緩存來臨時存儲創建昂貴的瞬態數據的對象。重用這些對象可以提供性能優勢,因爲它們的值不必重新計算。但是,這些對象對應用程序並不重要,如果內存不足,可以將其丟棄。如果被丟棄,它們的值必須在需要時重新計算。

+0

'NSCache'用於進程在生命週期內的內存緩存。問題是關於在啓動之間存儲對象。 (「當應用程序啓動時...」) – 2012-04-18 11:54:18

+0

您可以將NSCache對象歸檔並在啓動時或在輸入Background時加載/保存對象。 – CarlJ 2012-04-18 11:55:32

+0

'NSCache'不符合'NSCoding'或有任何其他的存檔方式。 – 2012-04-18 12:19:47