Junior — Middle
Ինչպե՞ս է ազատվում հիշողությունը, որը զբաղեցնում է օբյեկտը ծրագրում։
sobes.tech AI
Պատասխան AI-ից
iOS-ում հիշողության ազատումը հիմնականում ավտոմատ կերպով տեղի է ունենում ARC (Automatic Reference Counting) համակարգի շնորհիվ: Յուրաքանչյուր օբյեկտ ունի հղման հաշվիչ, որը մեծանում է նոր ուժեղ հղում ստեղծելիս և նվազում է այն հեռացնելիս: Երբ հաշվիչը հասնում է զրոյի, օբյեկտը ավտոմատ կերպով ոչնչացվում է և հիշողությունը ազատվում:
Եթե կոդում առաջանան ցիկլային հղումներ (օրինակ, երկու օբյեկտներ ուժեղ հղումներով միմյանց), հիշողությունը չի ազատվում: Այս խնդիրը լուծելու համար օգտագործվում են թույլ (weak) կամ առանց սեփականության (unowned) հղումներ:
Օրինակ՝
class Person {
var name: String
weak var apartment: Apartment? // թույլ հղում ցիկլից խուսափելու համար
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
unowned let tenant: Person // առանց սեփականության հղում
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
Այսպիսով, հիշողության ազատումը տեղի է ունենում ավտոմատ, եթե հղումները ճիշտ կառավարվում են։