ios – NSCache和背景

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

当应用程序进入后台时,当设备耗尽内存时,我希望它能够立即取消对象.

你知道任何有效的选择吗?

解决方法

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

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...