2016-06-11 2 views
1

Я новичок, и я смог получить в IOS Application Development и позвольте мне сказать вам, что я не знаю ни одного бита о памяти и управление памятью. В то время как я играл с tabViewController Я делаю две вкладки и три ViewController и соединить их черезNavigationalController и связать их как цикл, как: -IOS память и управление памятью

navigationController1

firstViewController - > secondViewController -> thirdViewController -> firstViewController

navigationController2

firstViewController -> secondViewController -> thirdViewController -> firstViewController

и запустить их на симуляторе и заметил, что как только я получаю ViewControllers на стек памяти увеличивается на .1 мегабайтах.

enter image description here

, чем добавить одного изображения размером 4,5 МБ на firstViewController (NavigationController1) и запустить приложение вдруг я заметил, что память достигла до 66 Мб

enter image description here

Поскольку приложение запускается, и когда я добавляю viewControllers в стек, память увеличивается с такой же скоростью, как в последний раз (.1 МБ). Я не не понимают причину этого и какова логика всего увиденного?

«И мои извинения за кнопки причины не показывается в TabBar есть два фрагмента на TabBar судоходства1 и Navigation2 кнопка также имеет метод, чтобы подтолкнуть взгляды»

ответ

1

Когда изображение загружаются в память становится несжатой. Хотя сжатое изображение может не требовать более 4,5 МБ для высокого разрешения (например, при сохранении в формате JPEG), это несжатый размер может меня значительно повысить. Даже если UIImageView является частью экрана или даже вне экрана, он по-прежнему требует объем памяти, основанный на исходном разрешении изображения.

Кроме того, здесь есть петля контроллера представления. Как только вы перейдете от VC1 -> VC2 -> VC3 -> VC1, вы не получите свой первоначальный экземпляр VC1 для последнего, а новый экземпляр, что означает, что у вас будет в общей сложности 4 контроллера вида в памяти на одном и том же время. То, что вам нужно сделать, чтобы перейти от VC3 и обратно к VC1, - это выставить стек контроллера вида вместо добавления другого экземпляра VC1. Вы можете сделать это, позвонив по телефону self.navigationController?.popToRootViewControllerAnimated(true) на VC3.

+0

Су, вы пытаетесь сказать, что viewControllers не принимают фактический размер изображения, они используют ссылку на изображение? – dreamBegin

Смежные вопросы