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.