Выбор ответа Middle Опционалы обновлено
Почему weak-ссылка всегда опциональна
Вопрос
Почему свойство weak var delegate: Delegate без ? не компилируется?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Слабая ссылка обнуляется сама, значит тип должен допускать nil. ARC обнуляет weak-ссылку, когда объект освобождается, поэтому её тип обязан быть опциональным.
Варианты ответа
weakразрешён только дляlet, а дляvarнужен опциональный тип- Протоколы нельзя хранить слабо, только конкретные классы
- Без
?нужно писатьunowned(safe), аweakустарел - Слабая ссылка обнуляется сама, значит тип должен допускать
nilправильный ответ
Разбор
ARC обнуляет weak-ссылку, когда объект освобождается, поэтому её тип обязан быть опциональным. Дело не в let или var, а в том, что значение может исчезнуть само. Протокол хранить слабо можно, если он ограничен классами (AnyObject). weak не устарел.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.