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.