Sobes.tech
Junior — Middle

V akých situáciách by ste mali použiť kľúčové slovo `unowned` v Swift?

sobes.tech AI

Odpoveď od AI

Kľúčové slovo unowned v Swift sa používa na deklaráciu slabého odkazu, ktorý nie je voliteľný a nezvyšuje počítadlo odkazov na objekt.

Používa sa v situáciách, keď existuje cyklický odkaz medzi objektmi, ale je zaručené, že odkazovaný objekt bude existovať dlhšie ako odkaz unowned.

Napríklad v vzťahoch "rodič — dieťa", kde dieťa udržiava odkaz unowned na rodiča, aby sa predišlo cyklu:

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

Ak bude objekt, na ktorý odkazuje unowned, odstránený, pokus o prístup k tomuto odkazu povedie k chybe počas behu. Preto je unowned vhodné, keď je životný cyklus objektu garantovaný, že bude dlhší ako odkaz na neho.