Sobes.tech
Middle

Hogyan működnek a számlálók (retention counts) az erős linkekkel az iOS-ben?

sobes.tech MI

Válasz az MI-től

Amikor egy objektumot erős hivatkozással rendelünk egy változóhoz, az objektum hivatkozásszámlálója 1-gyel növekszik. Amikor az erős hivatkozás nullára lesz állítva vagy kilép a hatókörből, a hivatkozásszám csökken 1-gyel. Az objektum akkor kerül deallokálásra, amikor a hivatkozásszám eléri a nullát, és többé nincs erős hivatkozás rá.

Példa:

class MyObject {
    deinit {
        // A deallocáláskor hívódik
        print("MyObject deallocálva.")
    }
}

var object1: MyObject? = MyObject() // object1 - erős hivatkozás, MyObject hivatkozásszámláló == 1
var object2 = object1 // object2 - erős hivatkozás, MyObject hivatkozásszámláló == 2

object1 = nil // Az erős hivatkozás object1 nullára állítva, MyObject hivatkozásszámláló == 1
object2 = nil // Az erős hivatkozás object2 nullára állítva, MyObject hivatkozásszámláló == 0
// MyObject deallocálva