Junior — Middle
Kokį elgesį tikimasi, kai deklaruojama kintamasis user naudojant silpną nuorodą su weak var user = User()?
sobes.tech AI
Atsakymas iš AI
Swift'e, deklaruojant kintamąjį su weak var user = User() sukuriama silpna nuoroda į User objektą. Tai reiškia, kad nuoroda nepadidina objekto nuorodų skaitiklio, ir jei daugiau nėra stiprių nuorodų į šį objektą, jis bus dezinicializuotas (pašalintas iš atminties).
Šiuo atveju, jei user yra vienintelė nuoroda į User objektą, tada iškart po objekto sukūrimo jis bus atlaisvintas, o user taps nil.
Pavyzdys:
class User {}
weak var user = User() // user iškart taps nil, nes nėra stiprių nuorodų
print(user) // nil
Todėl silpnos nuorodos dažniausiai deklaruojamos kaip pasirinktinės (weak var user: User?) ir naudojamos siekiant išvengti ciklinių nuorodų, pavyzdžiui, delegatuose.