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