Sobes.tech
Junior — Middle

Se va șterge automat un obiect din memorie dacă este indicat de trei referințe slabe (weak) și o referință neobligatorie (unowned)?

sobes.tech AI

Răspuns de la AI

Obiectul va fi eliminat automat din memorie dacă nu mai există referințe puternice (strong) către el. Referințele slabe (weak) și cele neobligatorii (unowned) nu cresc contorul de referințe al obiectului. În cazul dumneavoastră, dacă există doar trei referințe weak și una unowned, dar nicio referință strong, obiectul este considerat neutilizat și va fi deallocat.

Exemplu:

class MyClass {}

var strongRef: MyClass? = MyClass() // referință puternică
weak var weakRef1 = strongRef
weak var weakRef2 = strongRef
weak var weakRef3 = strongRef
unowned var unownedRef = strongRef!

strongRef = nil // acum nu mai există referințe puternice, obiectul va fi șters