Sobes.tech
Junior — Middle

В кои ситуации трябва да използвате ключовата дума `unowned` в Swift?

sobes.tech AI

Отговор от AI

Ключовата дума unowned в Swift се използва за обявяване на слака референция, която не е опционална и не увеличава броя на референциите към обекта.

Използва се в ситуации, когато съществува циклична референция между обекти, но се гарантира, че реферираният обект ще съществува по-дълго от референцията unowned.

Например, в отношенията „родител — дете“, където детето държи unowned референция към родителя, за да избегне цикъл:

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

Ако обектът, към който се отнася unowned, бъде изтрит, опитът за достъп до тази референция ще доведе до грешка по време на изпълнение. Затова unowned е подходящо, когато жизненият цикъл на обекта е гарантиран да бъде по-дълъг от референцията към него.