Из документации, viewDidUnload
- "Этот метод ... ваш шанс выполнить любую окончательную очистку. ..."
- "При возникновении проблемы с нехваткой памятии текущие представления контроллера представления не нужны, система может решить удалить эти представления из памяти "
Из Документации о слабых (семантика сеттера)
- Указывает, чтосуществует слабая (не владеющая) связь с объектом назначения. Если целевой объект освобожден, значение свойства автоматически устанавливается равным nil .
Так что это очевидно.Он соответствует правилам. Это не объект, на который указывает ваше свойство, а просто аннулирование вашего свойства на основе приведенного выше правила слабости.
viewDidUnload предполагает, что это ваше слабое свойство может 'Не указывать на какой-либо объект, потому что этот объект освобожден (в зависимости от места viewDidUnload в жизненном цикле View Controller).И просто очищает его с нуля.
Это безопасно для вас, явно для слабого правила и эффективного использования памяти.Компилятор не может быть уверен, что вы позаботились о указанном объекте.Ему просто нужно обеспечить уборку.