2016-06-11 195 views
1

我是新的,我的收入将IOS应用开发,让我告诉你,我不知道一个比特约内存和存储管理。当我和tabViewController打我让两个标签和三个的ViewController,并通过NavigationalController连接它们,并将其链接像一个循环: -IOS内存和内存管理

navigationController1

firstViewController - > secondViewController - > thirdViewController - > firstViewController

navigationController2

firstViewController - > secondViewController - > thirdViewController - > firstViewController

,并在模拟器上运行它们,发现只要我过得好堆栈的ViewControllers内存是.1 MB的增加。

enter image description here

比我添加尺寸的单个图像上的firstViewController(NavigationController1)4.5 MB和运行应用程序突然我注意到,存储器达到66 MB

enter image description here

随着应用程序的启动,以及在堆栈中添加viewControllers时,内存以与上次相同的速度增长(.1 MB)我不会理解它背后的原因以及整体的逻辑是什么?

“我的,理由按钮道歉未在使用TabBar示出有两个标题上的TabBar Navigation1和Navigation2也按钮有推视图的方法”

回答

1

当图像被加载到内存得到解压缩。虽然压缩的图像可能不需要超过4.5 MB的高分辨率(例如通过保存为JPEG),但未压缩的图像可能会高很多。即使UIImageView只是屏幕的一部分,或者甚至是屏幕外,它仍然需要基于图像原始分辨率的大量内存。

此外,你在这里有一个视图控制器循环。一旦你从VC1 - > VC2 - > VC3 - > VC1,你将不会将最初的VC1原始实例返回给最后一个实例,而是一个新的实例,这意味着你将在内存中共有4个视图控制器时间。你应该做什么从VC3转到VC1,是弹出视图控制器堆栈,而不是添加另一个VC1实例。您可以通过在VC3上致电self.navigationController?.popToRootViewControllerAnimated(true)来完成此操作。

+0

你是不是想说viewControllers不采用他们使用图像引用的实际大小的图像? – dreamBegin