我在使用ARC
的iPhone项目中。该应用程序是基于导航的应用程序,使用UINavigationController
。
典型的用例是多次从“主”UIViewController
转到“辅助”UIViewController
,最多可能100次。辅助控制器有很多静态的局部PNG图像,其中一些是重复的。
我正在分析应用程序,我可以看到,当从“主”控制器转到“辅助”控制器时,它分配大约0.8 MB,但是,当按下后退按钮时,它不会释放内存。所以,当我再次进入辅助控制器时,会分配其他0.8 MB,依此类推......
调试,我注意到辅助viewDidUnload:
的{{1}}方法永远不会被调用,但我也读到了这个方法,我应该设置nil控制器保存的引用。在UIViewController
中这样做没有用,因为我希望只有在按下后退按钮时才会发生这种情况,也就是说,当从堆栈中弹出控制器时(在推送另一个时也会调用viewDidDisappear:
方法)控制器在堆栈上。)
所以问题是:我有什么必须这样做的吗?我可以强制调用该方法吗?这种行为是否正常(分析,在“主要”的某些周期后分配达到20MB - >“次要” - >“主要” - >“次要” - > ...)??
提前谢谢大家
答案 0 :(得分:1)
ARC仅用于减少代码并在内部管理内存。 有关详细信息,请阅读以下教程,以便您能够更轻松地理解这些概念。
Understanding Automatic Reference Counting in Objective-C
我希望这可以帮助你。