我正在使用ARC
. 该应用程序是一个基于导航的应用程序,使用UINavigationController
.
典型的用例是从“主要”UIViewController
到“次要”UIViewController
多次,可能多达 100 次。辅助控制器有很多静态的本地 PNG 图像,其中一些是重复的。
我正在分析应用程序,我可以看到,当从“主”控制器转到“辅助”控制器时,它分配了大约 0.8 MB,但是,当按下后退按钮时,它不会释放内存。因此,当我再次访问辅助控制器时,分配了其他 0.8 MB,依此类推...
调试时,我注意到从不调用viewDidUnload:
辅助UIViewController
的方法,但我还读到这是我应该将控制器保存的引用设置为零的方法。这样做viewDidDisappear:
无济于事,因为我希望仅在按下后退按钮时发生这种情况,即从堆栈中弹出控制器时(在堆栈中viewDidDisappear:
推送另一个控制器时也会调用该方法)。
所以问题是:在哪里我必须这样做?我可以强制调用该方法吗?这种行为是否正常(分析,在“main”->“secondary”->“main”->“secondary”-> ...的一些循环之后分配增加到 20MB)??
谢谢大家