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

son*_*rxo 6 memory iphone allocation automatic-ref-counting viewdidunload

我正在使用iPhone项目ARC.该应用程序是基于导航的应用程序UINavigationController.

典型的用例是多次从"主" UIViewController转到"次" UIViewController,可能多达100次.辅助控制器有许多静态的本地PNG图像,其中一些是重复的.

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

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

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

谢谢大家

Akh*_*rma 1

ARC只是用来减少代码和内部管理内存。有关更多详细信息,请阅读下面的教程,以便您能够更轻松地理解这些概念。

了解 Objective-C 中的自动引用计数

我希望这可以帮助你。