Junior — Middle
Ինչպե՞ս է տեղի ունենում հղումային տվյալների տիպերի հիշողության բաշխումը և ազատումը։
sobes.tech AI
Պատասխան AI-ից
iOS-ում, հղման տիպերի (օրինակ՝ դասերի) համար հիշողությունը դինամիկ կերպով հատկացվում է heap-ում: Երբ ստեղծվում է դասի օբյեկտ, համակարգը նրան հատկացում է հիշողություն heap-ում և վերադարձնում է հղում այդ օբյեկտին:
Հիշողության ազատումը կատարվում է ավտոմատ հղումների հաշվարկի (ARC — Automatic Reference Counting) միջոցով: Ամեն օբյեկտ պահում է հղումների հաշվիչ՝ ակտիվ հղումների թվաքանակը: Երբ ստեղծվում է նոր հղում, հաշվիչը մեծանում է, իսկ երբ հղումը ջնջվում է կամ դառնում nil, նվազում է: Երբ հաշվիչը հասնում է զրոյի, օբյեկտը ավտոմատ կերպով հեռացվում է հիշողությունից:
Օրինակ՝
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Иван") // հղումների հաշվիչը = 1
var person2 = person1 // հղումների հաշվիչը = 2
person1 = nil // հղումների հաշվիչը = 1
person2 = nil // հղումների հաշվիչը = 0, Person օբյեկտը հեռացվում է հիշողությունից
Այսպիսով՝ ծրագրավորողը պետք չէ ձեռքով ազատել հիշողությունը — ARC-ը դա անում է ավտոմատ կերպով։