Junior — Middle
Milyen viselkedés várható, amikor egy user változót gyenge hivatkozással weak var user = User() használatával deklarálunk?
sobes.tech MI
Válasz az MI-től
Swiftben a weak var user = User() deklaráció egy gyenge hivatkozást hoz létre az User objektumra. Ez azt jelenti, hogy a hivatkozás nem növeli a hivatkozásszámot az objektumon, és ha már nincs más erős hivatkozás erre az objektumra, akkor az automatikusan felszabadul (kivonódik a memóriából).
Ebben az esetben, ha a user az egyetlen hivatkozás az User objektumra, akkor az objektum azonnal a létrehozás után felszabadul, és a user nil lesz.
Példa:
class User {}
weak var user = User() // a user azonnal nil lesz, mivel nincsenek erős hivatkozások
print(user) // nil
Ezért a gyenge hivatkozásokat általában opcionálisként (weak var user: User?) deklarálják, és a ciklikus hivatkozások megelőzésére használják, például delegáltaknál.