Junior — Middle
Czy obiekt zostanie automatycznie usunięty z pamięci, jeśli wskazuje na niego trzy słabe (weak) i jedno nieobowiązkowe (unowned) odniesienie?
sobes.tech AI
Odpowiedź od AI
Obiekt zostanie automatycznie usunięty z pamięci, jeśli nie będzie do niego żadnych silnych (strong) odwołań. Odwołania słabe (weak) i nieobowiązkowe (unowned) nie zwiększają licznika odwołań do obiektu. W Twoim przypadku, jeśli są tylko trzy odwołania weak i jedno unowned, ale brak odwołań strong, obiekt jest uważany za nieużywany i zostanie zwolniony.
Przykład:
class MyClass {}
var strongRef: MyClass? = MyClass() // odwołanie silne
weak var weakRef1 = strongRef
weak var weakRef2 = strongRef
weak var weakRef3 = strongRef
unowned var unownedRef = strongRef!
strongRef = nil // teraz nie ma odwołań silnych, obiekt zostanie usunięty