Развейте viewDidUnload по сравнению с dealloc вопросом

Вопрос о разъяснении как следование до:

Что точно я должен сделать в viewDidUnload? Когда я должен выпустить объекты в - (пустой) viewDidUnload, а не в-dealloc?

Так скажем, существует низкая ошибка памяти, и представление скрыто, и viewDidUnload называют. Мы делаем нулевой танец и выпуск. Позже вся стопка представления не нужна, таким образом, dealloc называют. Так как у меня уже есть выпуск и нулевой материал в viewDidUnload, у меня нет его в dealloc.Прекрасно.

Но если нет никакой низкой ошибки памяти, viewDidUnload никогда не называют. dealloc называют и так как у меня нет выпуска и нулевого материала, существует утечка памяти.

Другими словами, dealloc будут когда-либо называть без viewDidUnload того, чтобы быть названным сначала?

И практические следуют до, то есть, если я, выделение и установило что-то в viewDidLoad, и я выпускаю его и устанавливаю на ноль в viewDidUnload, я упускаю его из dealloc, или я делаю защитную нулевую регистрацию dealloc и выпуск/ноль это, если это не ноль?

7
задан Community 23 May 2017 в 11:48
поделиться

1 ответ

Освободите его в обоих. Вам не нужно проверять ноль. Отпуск по нулю ничего не делает.

Однако в viewDidUnload не выпускайте ivars, которые невозможно легко воссоздать в viewDidLoad, на случай, если представление снова загрузится.

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

8
ответ дан 7 December 2019 в 05:18
поделиться