Ответ
Объект User() будет немедленно освобожден (deallocated), так как weak-ссылка не увеличивает счетчик сильных ссылок (retain count). Созданный экземпляр не удерживается ни одной сильной ссылкой, поэтому ARC удаляет его сразу после инициализации.
Почему это происходит:
weak-ссылки в Swift являются опциональными и автоматически становятсяnil, когда объект освобождается.- Они используются для предотвращения циклов сильных ссылок (strong reference cycles), но требуют, чтобы объект где-то удерживался сильной ссылкой.
Пример с ошибкой:
weak var user = User() // Предупреждение компилятора и немедленное освобождение
print(user) // nil
Правильное использование:
// 1. Создаем сильную ссылку
let strongUser = User()
// 2. Создаем weak-ссылку на тот же объект
weak var weakUser = strongUser
// 3. weakUser указывает на объект, пока существует strongUser
print(weakUser?.name) // Доступ к свойству через опциональную цепочку
Компилятор Swift выдаст предупреждение: "Instance will be immediately deallocated because property 'user' is 'weak'".