Sobes.tech
Junior — Middle

Kas on võimalik rakendada mehhanismi, mis jälgib objekte nõrkade viidete abil, takistamata nende eemaldamist prügikoristaja poolt?

sobes.tech AI

Vastus AI-lt

Jah, iOS-is (ja Swift-is) on nõrkade viidete (weak references) mehhanism, mis võimaldab jälgida objekte ilma neid mällu hoidmata ning takistada nende eemaldamist prügikoristaja (ARC) poolt.

Nõrk viide ei suurenda objekti viidete loendurit, seega kui tugevad viited kaovad, vabastatakse objekt mälust.

Swiftis näide nõrga viite kasutamisest:

class Person {
    let name: String
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    weak var tenant: Person?  // nõrk viide
}

var person: Person? = Person(name: "Ivan")
var apartment: Apartment? = Apartment()
apartment?.tenant = person

person = nil  // Person objekt kustutatakse, kuna tugevad viited puuduvad

print(apartment?.tenant)  // nil

Nõrk viited võimaldavad jälgida objekte, takistamata nende eemaldamist.