Вопрос проверяет знание правил владения объектами и предотвращения retain cycle.
Родитель должен хранить дочерние объекты через сильные ссылки. Дочерние объекты должны ссылаться на родителя через weak. Это предотвращает циклические зависимости. Такой подход является стандартом в iOS-разработке
Чтобы избежать утечек памяти, необходимо четко определить направление владения объектами.
В большинстве случаев применяется простое правило:
родитель → strong
ребенок → weak
Если сделать обе ссылки сильными:
ARC не сможет освободить объекты
возникнет retain cycle
Если сделать родителя weak:
он может освободиться раньше времени
структура станет нестабильной
class Child {
weak var parent: Parent?
}
Иногда вместо weak используют unowned, если:
родитель гарантированно живет дольше ребенка
ошибка доступа недопустима
Сильная ссылка вниз по дереву и слабая вверх — базовое правило безопасной архитектуры объектов.