Junior — Middle
Какво поведение се очаква при обявяване на променлива user с използване на слаба препратка чрез weak var user = User()?
sobes.tech AI
Отговор от 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?) и се използват за предотвратяване на цикли на задържане, например в делегати.