使用的内存永远不会使用UIImage:imageWithContentsOfFile

时间:2013-12-05 18:34:48

标签: ios ios6 uiimageview uiimage

在我的应用程序上,我有几个UIViewControllers来加载每个上面的多个图像。看着所使用的内存,我意识到内存永远不会下降,因为我提出了视图控制器并使它们变暗,内存总是会上升。我开始搜索并发现问题是我加载图像的方式,我使用的方法是imageNamed:

UIImage *oneImage = [UIImage imageNamed:imageName];

所以我把方法改为:

UIImage *oneImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]];

但记忆仍然是一样的......

我正在使用ARC,在解雇uivicontroller之前我打电话:

oneImage = nil;

问题仍然存在,有任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

图像可能进入自动释放池。我从未清楚地了解ARC和自动释放池。我认为它们在ARC中变得毫无用处,只有当你混合旧代码时才有用,但事实并非如此。有时ARC会释放资源,即使您使用的方法是在范围之外返回自动释放对象,有时也不会。使用:

[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]];

Matt Galloway对此主题有一个interesting article