Junior — Middle
Կարող եք բացատրել ARC-ի ավտոմատ հիշողության կառավարման մեխանիզմը և ինչպես է այն ազատում չօգտագործվող օբյեկտները:
sobes.tech AI
Պատասխան AI-ից
ARC (Ավտոմատ Հղումների Հաշվարկ) է iOS-ում հիշողության կառավարման մեխանիզմ, որը ավտոմատ կերպով հետևում է օբյեկտներին հղումների թվին և ազատում է դրանք, երբ նրանք այլևս անհրաժեշտ չեն:
Աշխատելու սկզբունքը՝
- Յուրաքանչյուր օբյեկտ ունի հղումների հաշվիչ (retention count):
- Երբ ստեղծվում է հղում օբյեկտին, հաշվիչը մեծանում է:
- Երբ հղումը հեռացվում է, հաշվիչը նվազում է:
- Երբ հաշվիչը հասնում է զրոյի, օբյեկտը ավտոմատ կերպով հեռացվում է հիշողությունից:
ARC-ը աշխատում է կոմպիլացիայի փուլում՝ ավելացնելով retain/release կանչեր կոդում, այնպես որ ծրագրավորողը պետք չէ ձեռքով կառավարել հիշողությունը:
Swift-ի օրինակ՝
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, օբյեկտը հեռացվում է
Այսպիսով, ARC-ը ավտոմատ կերպով ազատում է օբյեկտները, երբ այլ ակտիվ հղումներ չեն լինում։