Sobes.tech
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