2013-01-16 24 views
1

我們正在將我們的核心數據和其他對象保存在Caches目錄中。它們可以被刪除,但如果它們在應用程序運行時消失,則會變得雜亂無章。這實際上是可以發生的,還是我們可以假設一旦創建了一個文件,它就會出現在應用程序運行時的其餘部分?應用程序運行時期間可以清空緩存目錄嗎?

+0

相應的文檔,此目錄中的信息可以在任何時間,如果系統中刪除跳出空間 – tkanzakic

回答

1

Table 1-3說:

...系統可能會刪除在少數情況下緩存目錄時 系統的磁盤空間非常低。當應用程序 正在運行時,這絕不會發生。

那好,然後:-)

-1

的NSCache類整合各種自動刪除策略,這 確保它不使用太多系統內存。如果內存需要 其他應用程序, 系統會自動執行這些策略。當被調用時,這些政策從緩存中刪除某些項目 ,最大限度地減少了內存佔用

,你可以看到該文檔:http://developer.apple.com/library/mac/#technotes/CachingPurgeableMemory/Introduction/Introduction.html

緩存是有成本的限制,如果文件大於閾值就越大將自動刪除。 但您可以使用countLimit,totalCostLimit屬性控制它們,並且您可以使用成本添加對象,請參閱setObject:forKey:cost:

你也可以自己驅逐物體。將NSDiscardableContent協議實現添加到您的對象並setEvictsObjectsWithDiscardedContent:YES

,但是當你的緩存更大,當你的應用程序在後臺運行,緩存將驅逐一些對象的(也許所有)

+0

雖然NSCache非常棒,但我詢問了Caches *目錄*(通過NSCachesDirectory標誌接收):-) –

相關問題