Sobes.tech
Назад к вопросам
Junior — Middle
75

Какое поведение ожидается при объявлении переменной user с использованием слабой ссылки через weak var user = User()?

Ответ от нейросети

sobes.tech AI

В Swift объявление переменной с помощью weak var user = User() создаёт слабую ссылку на объект User. Это значит, что ссылка не увеличивает счётчик ссылок объекта, и если больше нет сильных ссылок на этот объект, он будет деинициализирован (удалён из памяти).

В данном случае, если user — единственная ссылка на объект User, то сразу после создания объект будет освобождён, а user станет равен nil.

Пример:

class User {}

weak var user = User() // user сразу станет nil, так как нет сильных ссылок

print(user) // nil

Поэтому слабые ссылки обычно объявляют как опциональные (weak var user: User?), и они используются для предотвращения циклов удержания, например, в делегатах.