Можно ли сделать weak var для структуры? Почему?
Суть
Нет — слабой ссылки на структуру не бывает. weak и unowned работают поверх ARC: они указывают на объект в куче, у которого есть счётчик ссылок, и weak обнуляется, когда объект уничтожен. Структура — value-тип: она копируется целиком, не имеет счётчика и разделяемого экземпляра, на который можно «слабо» ссылаться. Нет объекта — нечему обнуляться.
final class Session {}
protocol Delegate: AnyObject {} // class-bound: можно weak
struct ViewState {
weak var session: Session? // ok: слабая ссылка на класс внутри struct
weak var delegate: (any Delegate)?
}
// weak var state: ViewState? // error: 'weak' may only be applied to
// // class and class-bound protocol types
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep