Ի՞նչն է տարբերությունը '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 — ეстонური