Sobes.tech
Junior — Middle

Ce comportament se așteaptă la declararea unei variabile user folosind o referință slabă prin weak var user = User()?

sobes.tech AI

Răspuns de la AI

În Swift, declarația unei variabile cu weak var user = User() creează o referință slabă către obiectul User. Aceasta înseamnă că referința nu crește contorul de referințe al obiectului, iar dacă nu mai există referințe puternice către acel obiect, acesta va fi dezinicializat (șters din memorie).

În acest caz, dacă user este singura referință la obiectul User, atunci imediat după crearea obiectului, acesta va fi eliberat, iar user va deveni nil.

Exemplu:

class User {}

weak var user = User() // user va deveni imediat nil, deoarece nu există referințe puternice

print(user) // nil

De aceea, referințele slabe sunt de obicei declarate ca opționale (weak var user: User?) și sunt folosite pentru a preveni ciclurile de retenție, de exemplu, în delegați.