iPhone Dev - Multi-View App ленивая загрузка - PullRequest
0 голосов
/ 02 августа 2009

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

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

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

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

1 Ответ

1 голос
/ 02 августа 2009

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

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

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

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

...