我正在使用在我的应用程序委托上创建并存储的 ARC 和 NSCache。然后我通过应用程序委托从控制器调用它。NSCache 在从 url 加载图像时存储图像,并且内存使用量上升得非常快。当我检查分析器的实际内存使用情况时,我的应用程序甚至达到了 320 MB 的内存使用情况,但在分配时它说它刚刚分配了 20-30 MB。
在我的应用程序委托上,我将缓存设置如下(它是一个 ivar):
cache = [[NSCache alloc] init];
[cache setCountLimit:100];
[cache setTotalCostLimit:1500000];
[cache setEvictsObjectsWithDiscardedContent:YES];
我实现了一个按钮来试验 NSCache,当我点击它时,它会调用:
- (IBAction)eraseCache:(id)sender {
[[appDelegate cache] removeAllObjects];
}
在分析器上,使用的内存没有下降,但它实际上又开始获取图像,所以我知道删除的对象。如何使用 ARC 随意释放此内存使用量?如何获取缓存的大小以知道何时释放它?