2016-06-11 185 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