0

我很开始开发,我正在制作一个包含大约150个ViewController的应用程序!每个人都有一个UIImageView。应用程序在崩溃之前占用太多内存! (iPhone)

我一直在做一些测试,并且在iPhone本身使用该应用程序一段时间后,它会在我继续查看ViewControllers时崩溃。

我一直在分析仪器中的这一点,并且我没有泄漏,但是我的内存分配刚刚起来,当我一直在我的iPhone上查看ViewControllers时,使用情况一直持续下去,直到崩溃。

我认为很明显它会崩溃,因为应用程序只是占用太多的内存。

所以可以在任何一个解释如何释放viewControllers以释放内存这样就不会有崩盘提前

谢谢!

回答

0

你需要问自己的第一个问题是为什么你需要150个ViewController。 你想呈现150个不同的图像? 如果是这样,那么多个ViewControllers不是要走的路。你可能需要使用一个UIScrollView,它将包含你的图像(当然不是所有的图像,使用延迟加载)。

您的情况可能发生的情况是,您每次需要显示新的ViewController时调用“pushViewController”,但这不会释放先前的ViewController。它只是堆叠所有以前的ViewController并保留它们的指针。

你会发现,导航控制器的工作方式是它们有一个视图控制器数组。每次你展示一个新的视图控制器时,它都会被添加到数组的末尾。当你点击“Back”或调用“popViewController”时,数组的最后一项被删除(然后从内存中自动释放)。

请参阅thisthis问题以了解如何创建UIScrollView来滚动图像。

+0

非常感谢您的回答..我之前就知道我不应该使用多个viewControllers ..首先我会尝试调用“pushViewController”它会有用吗?那么我将重新设计我的应用程序,我将使用UIScrollView ..再次感谢你! :) –

+0

@AbdElrhmanRizk不,你不应该使用“pushViewController”,因为它会保持一个指向你以前的ViewControllers的指针。您应该使用UIScrollView,或者直接将您当前呈现的图像替换为要显示的下一张图像。即'myImageView.image = [UIImage imageNamed:@“NewPicName.png”]' –

+0

嗯,我将使用UIScrollView ..谢谢你的时间:) ..好运;) –