如何在非ARC项目中切换视图控制器时释放内存

时间:2014-03-31 11:25:18

标签: ios memory-management uiviewcontroller memory-leaks

我想在两个包含大量图像视图和其他图像内容的视图控制器之间切换。当我切换回另一个视图控制器时,内存未释放。当我回去时,将再次加载相同数量的内存。以下是我如何切换到另一个viewcontroller。

 MainViewController *mView = [self.storyboard instantiateViewControllerWithIdentifier:@"main_view_controller"];
            lView.modalTransitionStyle= UIModalTransitionStyleCrossDissolve;
            [self presentViewController:mView animated:YES completion:nil];

任何人都可以帮我找到一种在切换回另一个viewcontroller时释放内存的方法。提前谢谢。

1 个答案:

答案 0 :(得分:0)

原因在于您有一些保留的ivars,例如从/向另一个类引用。

通过在对象上使用release,该对象引用计数减1。因此,如果您的类具有比1更高的引用计数(在一个完美的示例中。在实际实现中这将有所不同),它将不会被释放。

请务必将视图设置为nil。如果您在“MainViewController”中有一个计时器或观察者,那么可能使您的视图保留的一件事就是。然后,如果在该类上使用release,则引用计数仍将高于0,因此您的视图将永远不会被释放。

仪器是一个很好的工具,可用于在程序中查找与您类似的场景。了解更多How to use Instruments - RayWenderlich.com