Junior — Middle
Milyen helyzetekben kell az `unowned` kulcsszót használni Swift-ben?
sobes.tech MI
Válasz az MI-től
A Swiftben a unowned kulcsszó egy olyan gyenge hivatkozást jelent, amely nem opcionális, és nem növeli az objektum hivatkozásszámát.
Olyan helyzetekben használják, amikor ciklikus hivatkozás van az objektumok között, de garantált, hogy a hivatkozott objektum hosszabb ideig fog létezni, mint az unowned hivatkozás.
Például, a "szülő — gyermek" kapcsolatokban, ahol a gyermek unowned hivatkozást tart fenn a szülőre, hogy elkerüljék a ciklust:
class Parent {
var child: Child?
}
class Child {
unowned let parent: Parent
init(parent: Parent) {
self.parent = parent
}
}
let dad = Parent()
let kid = Child(parent: dad)
dad.child = kid
Ha a unowned-ként hivatkozott objektum törlésre kerül, a hozzáférés kísérlete futási időben hibát eredményez. Ezért a unowned akkor megfelelő, ha az objektum életciklusa garantáltan hosszabb, mint a rá mutató hivatkozás.