Junior — Middle
Ի՞նչ տարբերություն կա Strong և Weak հղումների տեսակների միջև հիշողության կառավարման և հղման մոդելում։
sobes.tech AI
Պատասխան AI-ից
Strong-հղում — դա նորմալ ուժեղ հղում է օբյեկտին, որը մեծացնում է այդ օբյեկտի հղումների հաշվիչը (retain count): Երբ առնվազն մեկ ուժեղ հղում կա, օբյեկտը չի հեռացվի հիշողությունից:
Weak-հղում — դա թույլ հղում է, որը չի մեծացնում օբյեկտի հղումների հաշվիչը: Այն օգտագործվում է ռետինգային շրջանների (retain cycles) կանխարգելման համար: Եթե այն օբյեկտը, որի վրա ցույց է տալիս թույլ հղումը, հեռացվի, ապա այն ավտոմատ կերպով կդառնա nil:
Օրինակ Swift-ում:
class Person {
var name: String
init(name: String) { self.name = name }
var apartment: Apartment?
}
class Apartment {
let unit: String
weak var tenant: Person? // թույլ հղում՝ շրջանները կանխելու համար
init(unit: String) { self.unit = unit }
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john // թույլ հղում
Այստեղ, թույլ հղում tenant չի պահում Person օբյեկտը, ինչը թույլ է տալիս խուսափել հիշողության լիկվիդից։