Вопрос проверяет понимание работы ARC и гарантий жизненного цикла объектов.
weak ссылка может стать nil, если объект был освобожден. Поэтому она обязана быть optional. unowned предполагает, что объект всегда существует в момент обращения. Если объект будет освобожден раньше, приложение упадет. Это принципиальная разница в контракте использования.
Разница между weak и unowned отражает разные гарантии времени жизни объектов.
weakweak ссылка безопасна.
ARC автоматически обнуляет ссылку
Объект может быть освобожден в любой момент
Код обязан учитывать nil
weak var owner: Owner?
unownedunowned ссылка небезопасна.
ARC не обнуляет ссылку
Ожидается, что объект всегда жив
Нарушение ожиданий приводит к крэшу
unowned let coordinator: Coordinator
weak — делегаты, замыкания, UI
unowned — parent-child отношения с жестким контрактом
Optional у weak — это защита от обращения к освобожденному объекту. unowned жертвует безопасностью ради удобства, поэтому требует строгих гарантий.