使用ARC时将对象设置为nil?

时间:2012-05-22 09:42:02

标签: iphone memory automatic-ref-counting allocation viewdidunload

我在使用ARC的iPhone项目中。该应用程序是基于导航的应用程序,使用UINavigationController

典型的用例是多次从“主”UIViewController转到“辅助”UIViewController,最多可能100次。辅助控制器有很多静态的局部PNG图像,其中一些是重复的。

我正在分析应用程序,我可以看到,当从“主”控制器转到“辅助”控制器时,它分配大约0.8 MB,但是,当按下后退按钮时,它不会释放内存。所以,当我再次进入辅助控制器时,会分配其他0.8 MB,依此类推......

调试,我注意到辅助viewDidUnload:的{​​{1}}方法永远不会被调用,但我也读到了这个方法,我应该设置nil控制器保存的引用。在UIViewController中这样做没有用,因为我希望只有在按下后退按钮时才会发生这种情况,也就是说,当从堆栈中弹出控制器时(在推送另一个时也会调用viewDidDisappear:方法)控制器在堆栈上。)

所以问题是:我有什么必须这样做的吗?我可以强制调用该方法吗?这种行为是否正常(分析,在“主要”的某些周期后分配达到20MB - >“次要” - >“主要” - >“次要” - > ...)??

提前谢谢大家

1 个答案:

答案 0 :(得分:1)

ARC仅用于减少代码并在内部管理内存。 有关详细信息,请阅读以下教程,以便您能够更轻松地理解这些概念。

Understanding Automatic Reference Counting in Objective-C

我希望这可以帮助你。