Предполагая, что они являются свойствами, вы должны установить для них nil
как в viewDidUnload, так и в dealloc, убедившись в том, что вы используете установщик. Так, например,
self.imageView = nil;
self.segmentControl = nil;
/* etc */
Установка для свойства сохранения значения nil приводит к освобождению объекта и установке переменной экземпляра на значение nil (так что безопасно делать то же самое снова, даже не получая новый объект между ними).
viewDidUnload
вызывается, когда представление вашего контроллера представления было извлечено из памяти, что может произойти, когда предупреждение памяти появляется, и ваш контроллер представления в настоящее время не использует его представление. Если вы сохранили некоторые подпредставления для себя (неявно, через установщик 'retain' или намеренно) и не освободили их, они останутся в памяти. Вы не хотите, чтобы они это делали, потому что вы должны освободить как можно больше памяти после получения предупреждения о памяти, и вы или другие процессы могут быть остановлены, если недостаточно памяти освобождается во всей системе. Так что быть добрым к своему пользователю и быть хорошим гражданином.
Тот же совет применяется независимо от того, сохранены ли вы или назначены свойства; если они сохраняются, тогда установка свойства в nil освобождает, если они просто назначены, тогда установка свойства в nil не позволит вам держать висячий указатель.