Приложение с вкладками + контроллер навигации: как освободить сложенные контроллеры UIViewControllers при нажатии вкладки? - PullRequest
0 голосов
/ 21 октября 2011

У меня есть приложение с вкладками с контроллерами навигации во вкладках и просмотр контроллера в них. Когда я нажимаю какой-либо элемент вкладки и углубляюсь в иерархию контроллера вида (которая поддерживается контроллером навигации), что происходит, когда я нажимаю элемент вкладки напрямую? ИМХО, все контроллеры представлений находятся в стеке в памяти, и если я снова начну навигацию с первого контроллера, то я помещу копии контроллера представлений в стек навигации. Как мне сделать правильное управление памятью? ИМХО, мне нужно освободить (вытолкнуть) все контроллеры представления, которые находятся на экране (кроме первого), когда пользователь нажимает на какой-либо элемент вкладки. Как этого добиться?

1 Ответ

2 голосов
/ 21 октября 2011

Система позаботится о выгрузке ненужных представлений, когда ей потребуется память (и перезагрузке их, когда они необходимы), поэтому, если вы правильно реализовали метод viewDidUnload и receivedMemoryWarning, у вас все будет хорошо.Сами контроллеры представления почти не занимают память (если вы сами не выделили кучу вещей).В любом случае они не размещаются в стеке, так как объекты они размещаются в куче (общая цель c эмпирическим правилом).Когда вы нажимаете контроллер вида, он сохраняется, а когда вы открываете контроллер вида, он освобождается.Обычно вы не ожидаете, что контроллер навигации на каждой вкладке вернется к корню, потому что вы нажали другую вкладку, но если вы действительно хотите это сделать, вы можете использовать метод popToRootViewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...