🥺 SE-0481: Weak let
Swift предоставляет слабые ссылки на объекты с помощью модификатора
weak. Слабые ссылки становятся nil при уничтожении объекта. Текущее правило требует объявления слабых ссылок с ключевым словом var. Это вызывает проблемы с потокобезопасностью при использовании слабых ссылок в параллельных контекстах. Предложение позволяет объединить weak с Sendable.Мотивация:
🟠Классы с слабыми сохраненными свойствами не могут быть
Sendable🟠Замыкания с явными слабыми захватами не могут быть
Sendable🟠Разрешение слабой ссылке быть неизменяемой (
weak let) решит проблемуОграничение на слабые ссылки:
🔴Слабые ссылки должны быть изменяемыми, чтобы соответствовать идее изменения при уничтожении объекта.
🔴Это ограничение вызывает проблемы с потокобезопасностью.
Обходное решение:
🟣Обертывание слабых ссылок в структуры позволяет обойти ограничение
🟣
weak ссылки в структурах ведут себя иначе, чем в других типах🟣
weak теперь можно комбинировать с let👉Новости 👉База вопросов
