Как правильно составить метод "viewDidLoad" - PullRequest
0 голосов
/ 13 ноября 2010

Я не совсем новичок в разработке для iPhone, но я столкнулся с ситуацией, когда не был уверен в том, какой вариант дизайна для моего кода лучше.

У меня есть контроллер представления, который асинхронно выбирает изображение из Интернета и загружает его в представление изображения. Когда приложение получает предупреждение памяти, однако, imageView выпускается didReceiveMemoryWarning. Если при загрузке изображения приложение получает предупреждение из памяти, к моменту, когда мой код попытается загрузить изображение в imageView, изображение будет равно нулю.

Какова лучшая практика для viewDidLoad? Должен ли я просто создать экземпляр переменных, которые могут понадобиться мне позже? Или я должен просто проверить nil-значения в другом месте моего кода?

Кроме того, в viewDidUnload я должен просто установить переменные IBOutlet в ноль? Почему это?

Спасибо! Матф

Ответы [ 2 ]

1 голос
/ 13 ноября 2010
  1. IBOutlets могут быть как переменными экземпляра, так и свойствами. В обоих случаях мы должны выпустить ссылки, когда представление, которое является самым верхним из супервидов, выгружено. Установка для сохраненных свойств IBOutlet значения nil автоматически освобождает ссылку, но, например, для переменных нам необходимо их освободить. Нам по-прежнему необходимо установить переменные экземпляра равными nil, поскольку viewDidUnload не имеет значения, поэтому мы должны соблюдать правило управляемой памяти, иначе у нас могут быть недопустимые ссылки внутри экземпляра.

  2. Я не думаю, что есть правила относительно того, что вы должны делать в viewDidLoad, но если вы выпустили и установили для некоторых переменных значение nil в viewDidUnload, вам не нужно снова проверять nil в viewDidLoad, если только вы не доверяйте рамкам.

1 голос
/ 13 ноября 2010

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

В viewdidunload вы должны освободить ресурсы, которые вы создали в viewdidload (или загрузочном представлении).Включая любые IBoutlets, которые разработчик интерфейса подключил для вас.Хорошей практикой является установка этих переменных на ноль, чтобы гарантировать, что они не будут непреднамеренно доступны после выпуска или двойного выпуска.

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