Sobes.tech
Middle

Jak działają liczniki (retention counts) z silnymi linkami w iOS?

sobes.tech AI

Odpowiedź od AI

Przy przypisaniu obiektu do zmiennej ze silnym odwołaniem, licznik odwołań do obiektu zwiększa się o 1. Gdy silne odwołanie zostanie ustawione na null lub wyjdzie z zakresu, licznik odwołań zmniejsza się o 1. Obiekt jest zwalniany, gdy jego licznik odwołań osiąga zero i nie ma już silnych odwołań.

Przykład:

class MyObject {
    deinit {
        // Wywoływane podczas zwalniania obiektu
        print("MyObject został zwolniony.")
    }
}

var object1: MyObject? = MyObject() // object1 - silne odwołanie, licznik odwołań do MyObject == 1
var object2 = object1 // object2 - silne odwołanie, licznik odwołań do MyObject == 2

object1 = nil // Silne odwołanie object1 ustawione na null, licznik odwołań do MyObject == 1
object2 = nil // Silne odwołanie object2 ustawione na null, licznik odwołań do MyObject == 0
// MyObject jest zwalniany