NSCache和背景

Luk*_*uka 14 ios nscache

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

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

你知道有效的替代方案吗?

ace*_*egs 10

就我而言,当存储在NSCache中的对象不符合NSDiscardableContent协议时就会发生这种情况.当我添加所述协议时,当应用程序进入后台时逐出对象消失.

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


小智 1

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