Middle
Kuidas töötavad loendurid (retention counts) tugevate linkidega iOS-is?
sobes.tech AI
Vastus AI-lt
Kui objektile määrate tugeva viitega muutuja, objekti viite loendur suureneb 1 võrra. Kui tugev viide seatakse nulliks või väljub vahemikust, väheneb viite loendur 1 võrra. Objekt dealloc'itakse, kui tema viite loendur jõuab nulli ja tal ei ole enam tugevaid viiteid.
Näide:
class MyObject {
deinit {
// Kutsutakse objekti dealloc'imise ajal
print("MyObject on dealloc'itud.")
}
}
var object1: MyObject? = MyObject() // object1 - tugev viide, MyObject viite loendur == 1
var object2 = object1 // object2 - tugev viide, MyObject viite loendur == 2
object1 = nil // Tugev viide object1 seatakse nulliks, MyObject viite loendur == 1
object2 = nil // Tugev viide object2 seatakse nulliks, MyObject viite loendur == 0
// MyObject dealloc'itakse