Вопрос

(Точно так же, как вы знаете, я учусь разрабатывать для iphone, без конструктора интерфейса)

Я пишу свое первое приложение с несколькими представлениями, в котором есть корневой viewcontroller и два других viewcontroller, а корневой viewcontroller использует отложенную загрузку, поэтому, когда viewDidLoad создает первый viewcontroller и добавляет его представление в подпредставление, но не создает другой, пока он не понадобится. Но после загрузки второго они оба остаются там до тех пор, пока приложение не закроется (если только оно не получит предупреждение о памяти).

Поэтому мне интересно: когда пользователь переключает два других представления, я должен выгрузить другое, которое удаляется (устанавливая его в ноль - это сохраняющее свойство)? Поэтому каждый раз, когда пользователь нажимает кнопку, текущий контроллер представления выгружается (после удаления из суперпредставления), а следующий загружается и добавляется как подпредставление?

Так что это правильно или правильно, но только когда приложение имеет много представлений, а мое не достаточно сложно, чтобы оправдать это, или это вообще плохо, и я должен просто пусть didReceiveMemoryWarning позаботится об этом (в didReceiveMemoryWarning я установил viewcontroller, который в данный момент не отображается, равным nil)?

Это было полезно?

Решение

Ответ действительно зависит. Как правило, вам следует отключить и установить нулевое представление, которое не отображается, но если пользователь собирается часто переключаться между ними, вы можете сохранить скрытое представление (кэшированное).

Вы не хотите, чтобы ваше приложение выдвигало телефон пользователя на didReceiveMemoryWarning. Когда вы получаете это предупреждение, в телефоне происходят другие вещи, которые могут вызвать зависание вашего приложения на мгновение, пока iPhone сбрасывает кэшированные страницы Safari, кэшированные объекты UIImageView и т. Д. ... этот процесс может быть заметен для конечного пользователя и вашего приложение может выглядеть не так гладко, как должно.

Также важно помнить, что некоторые пользователи могут использовать iPhone первого поколения, iPod Touch и 3G, чтобы у них не было дополнительной памяти 3GS.

При этом я ошибаюсь из-за своей консервативности с памятью, поэтому я освобождаю и аннулирую представление, а затем повторно создаю его экземпляр, когда пользователь хочет его увидеть. Влияние вашего распределения представления по сравнению с очисткой системы из-за didReceiveMemoryWarning, как правило, будет намного меньше для пользователя вашего приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top