Sobes.tech
Junior — Middle

Aké správanie sa očakáva pri deklarácii premennej user s použitím slabého odkazu cez weak var user = User()?

sobes.tech AI

Odpoveď od AI

V jazyku Swift deklarácia premennej pomocou weak var user = User() vytvára slabé odkazovanie na objekt User. To znamená, že odkaz nezvyšuje čítač odkazov objektu, a ak už neexistujú žiadne silné odkazy na tento objekt, bude objekt de-inicializovaný (odstránený z pamäti).

V tomto prípade, ak je user jediným odkazom na objekt User, potom ihneď po jeho vytvorení bude objekt uvoľnený a user sa stane nil.

Príklad:

class User {}

weak var user = User() // user bude ihneď nil, pretože nie sú žiadne silné odkazy

print(user) // nil

Preto sa slabé odkazy zvyčajne deklarujú ako voliteľné (weak var user: User?) a používajú sa na prevenciu cyklických odkazov, napríklad v delegátoch.