Ինչպե՞ս է iOS-ում իրականացվում ավտոմատ և ձեռքով հիշողության աշխատանքը, և ինչ մեխանիզմներ են օգտագործվում ռեսուրսների կառավարման համար։
sobes.tech AI
Պատասխան AI-ից
iOS-ում հիշողության կառավարումը հիմնականում երկու հիմնական եղանակով է իրականացվում՝ ավտոմատ և ձեռքով:
-
Ավտոմատ հիշողության կառավարում (ARC — Ավտոմատ հղումների հաշվարկ)
ARC-ը մի մեխանիզմ է, որը ներառված է կոմպիլյատորում և ավտոմատ կերպով ավելացնում է retain/release կանչեր Objective-C և Swift օբյեկտների համար: Այն հաշվում է օբյեկտի հղումների քանակը և ազատում է հիշողությունը, երբ հաշիվը հասնում է զրոյի:
Օրինակ՝
class Person { var name: String init(name: String) { self.name = name } } var p1: Person? = Person(name: "Иван") var p2 = p1 // հղումների քանակը մեծանում է p1 = nil // քանակը նվազում է p2 = nil // օբյեկտը ազատվում է -
Ձեռքով հիշողության կառավարում
Հին iOS տարբերակներում (ARC-ից առաջ), ծրագրավորողը ձեռքով կանչում էր
retain,releaseևautoreleaseմեթոդները օբյեկտների կյանքի ցիկլը կառավարելու համար: -
Ռեսուրսների կառավարում
Բացի հիշողությունից, ռեսուրսների (ֆայլեր, ցանցային կապեր, ժամացույցներ) կառավարումը իրականացվում է օրինակների միջոցով՝ ինչպես
deinitSwift-ում՝ ռեսուրսները ազատելու համար օբյեկտի ոչնչացման ժամանակ:Նույնպես լայնորեն օգտագործվում են կառուցվածքներ՝
autoreleasepool՝ ժամանակավոր օբյեկտների կառավարումը հեշտացնելու համար:
Այսպիսով, ARC-ը զգալիորեն պարզեցնում է հիշողության հետ աշխատանքը, նվազեցնում է արտահոսքների հավանականությունը, իսկ ձեռքով կառավարումը հազվադեպ է կիրառվում և միայն հատուկ դեպքերում։