Sobes.tech
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?) и се използват за предотвратяване на цикли на задържане, например в делегати.