Sobes.tech
Junior — Middle

Ի՞նչն է տարբերությունը 'unowned' և 'strong' բանալի բառերի օգտագործման միջև Swift-ում հղումներն հայտարարելու ժամանակ։

sobes.tech AI

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

Swift- ում strong և unowned բանալի բառերը օգտագործվում են հղումներն կառավարելու և պահպանումների ցիկլերը (retain cycles) կանխելու համար:

  • strong — դա ստանդարտ ուժեղ հղում է, որը բարձրացնում է օբյեկտի հղումների հաշվիչը: Երբ առնվազն մեկ ուժեղ հղում կա, օբյեկտը չի հեռացվի հիշողությունից:

  • unowned — դա թույլ, բայց ոչ ընտրովի հղում է: Դա չի բարձրացնում հղումների հաշվիչը, բայց ենթադրում է, որ հղումային օբյեկտը միշտ գոյություն ունի այդ հղումի օգտագործման ժամանակ: Եթե օբյեկտը արդեն հեռացվել է, unowned հղումին մուտք գործելը կբերի գործարկման ժամանակ սխալի:

Օրինակ:

class Person {
    var apartment: Apartment?
}

class Apartment {
    unowned let tenant: Person
    init(tenant: Person) {
        self.tenant = tenant
    }
}

let john = Person()
let apt = Apartment(tenant: john)
john.apartment = apt

Այստեղ tenant-ը հայտարարված է որպես unowned, քանի որ բնակարանը չպետք է պահպանի մարդու ուժեղ հղումով, որպեսզի խուսափի ցիկլից, բայց ենթադրվում է, որ մարդը երկար ժամանակ գոյություն ունի բնակարանից:

  • ky — кыргызча
  • ka — ქართული
  • lt — ლიტვიური
  • lv — ლატვიური
  • et — ეстонური