NSCache和背景

我注意到当应用程序在后台运行时,NSCache会清除所有的对象。 这是预期的行为? 有没有办法避免它?

当应用程序进入后台时,当设备内存不足时,我希望它会驱逐对象。

你知道任何有效的select吗?

在我的情况下,当存储在NSCache中的对象不符合NSDiscardableContent协议时发生。 当我添加上述协议时,应用程序进入背景时驱逐对象消失。

另外,基于NSCache.m的源代码,我在这里发现,不符合NSDiscardableContent协议的对象在运行时永远不会被删除,即使应用程序需要更多的内存,也应该驱逐一些元素。 也许这就是为什么non-NSDiscardableContent对象在应用程序进入后台时被驱逐的原因,因为这是他们被驱逐的好时机。

在这个相关的post中的评论表明,当应用程序进入后台NSCache被清除。 NSCache不会驱逐数据