IOS Push много просмотр контроллера без поп
Я хотел знать, что произойдет, если мы снова продолжим нажимать контроллеры одного и того же представления n. У меня есть 4 кнопки, каждая из которых вызывает просмотр. Все 4 кнопки присутствуют во всех 4 видах. Таким образом, каждый раз, когда я нажимаю кнопку, загружается вид. Так что я выдвигаю контроллер вида. приведет ли это к какой-то проблеме управления памятью или даже к другой проблеме? Любой другой способ справиться с этим? Я не могу использовать панель вкладок из-за проблем дизайна.
Я ХОЧУ В ОСНОВНОМ РЕАЛИЗАЦИИ ТАБ-БАР С 4 КНОПКАМИ. Я НЕ МОГУ ПОЛЬЗОВАТЬСЯ ТАБ-БАРОМ ИЗ-ЗА ДИЗАЙН-ПРОБЛЕМ
2 ответа
Это не приведет к какой-либо конкретной проблеме управления памятью. Каждый раз, когда вы выделяете объект, он занимает немного памяти. Когда вы нажимаете на контроллер представления, вы просто выделяете новую копию этого объекта. Будь то контроллер представления, модель данных или строка, каждый объект занимает некоторую память. Вы можете легко профилировать, сколько дополнительной памяти используется каждый раз, когда вы нажимаете контроллер представления, но, скорее всего, это незначительно (вероятно, намного меньше, чем 1 КБ, в зависимости от того, сколько у вас там). Я только что профилировал один из моих контроллеров представления, и он использовал 320 байтов. Итак, для простой математики, скажем, каждый push занимает 1 КБ памяти. И iPhone 5 имеет 1 Гб оперативной памяти. Этого достаточно, чтобы вместить около 1 миллиона контроллеров представления. Так что я бы не волновался об этом.
Однако, если вы хотите беспокоиться об этом, вы должны реализовать didReceiveMemoryWarning
в вашем представлении контроллер и освободить любые ненужные объекты.
Вы можете добавить обратно Btn из ваших 4 других контроллеров. На обратной стороне его удаленная из стека навигации память восстанавливается.
Если вам все же придется вручную управлять им, вы можете использовать [self.navigationController viewControllers]
проверить, есть ли viewController или нет, и принять соответствующее решение.