2012-10-31 34 views
11

我注意到當應用程序在後臺運行時,NSCache會清除它的所有對象。這是預期的行爲?有沒有辦法避免它?NSCache和背景

當應用程序在後臺運行時,我認爲它會在設備內存不足時立即驅逐對象。

你知道任何有效的選擇嗎?

回答

7

在我的情況下,當存儲在NSCache中的對象不符合NSDiscardableContent協議時會發生這種情況。當我添加上述協議時,應用程序進入背景時驅逐對象消失。

此外,根據NSCache.m的來源,我發現here,不符合NSDiscardableContent協議對象不會在運行時甚至刪除該應用程序需要更多的內存,並應該驅逐它的一些元素。也許這就是爲什麼當應用程序進入後臺時非NSDiscardableContent對象被驅逐的原因,因爲這是他們被驅逐的好時機。