Sobes.tech
Junior — Middle

Ի՞նչ իրավիճակներում պետք է օգտագործել `unowned` բանալի բառը Swift-ում։

sobes.tech AI

Պատասխան AI-ից

Swift- ում unowned բանալի բառը օգտագործվում է որպես թույլ թղթապանակ, որը չի հանդիսանում ընտրովի և չի ավելացնում օբյեկտի հղումների հաշվիչը:

Այն օգտագործվում է այն իրավիճակներում, երբ օբյեկտների միջև կա ցիկլային հղում, բայց երաշխավորվում է, որ հղված օբյեկտը երկար ժամանակ կլինի 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-ը հարմար է, երբ օբյեկտի կյանքի ցիկլը երաշխավորված է, որ երկար կլինի նրա հղումից ավելի երկար: