2013-01-16 50 views
1

我有一个关于自动释放池和内存释放的问题,我正在开发一个应用程序。如果有人需要查看我可以发布的代码。自动释放池中的内存不会释放,直到内存警告或应用程序进入背景

首先,我在这个应用程序中使用ARC,现在基本上我在启动时分配了一点内存(用于介绍动画的图像),并且它们所占用的内存似乎不正确直到我收到内存警告出于某种原因,或者如果我输入背景并重新输入应用程序的前景。

我一直在监视在代码以及仪器中分配的内存量,所以似乎这个问题不是一些误报。我知道一个事实,我正确地处理图像内存,因为我清楚地将UIImageView.animationImages属性设置为nil,并将UIImageView设置为nil,并在动画完成后从内存释放它的父视图控制器。基本上,它所做的所有事情都被设置为零或者从超级视图中删除,以确保ARC知道它应该被释放。

有没有什么办法可以清除这个自动释放的内存池,类似于进入应用程序背景或接收内存警告的结果?

回答

0

想通了,我分配给我的介绍动画的UIImages正在通过imageNamed:方法缓存,因此即使在自动释放一段时间后也会保留。

要解决这个问题,我使用imageWithContentsOfFile:不缓存图像的方法。