Junior — Middle
Ինչպե՞ս կարելի է վերացնել ցիկլային հղումները հիշողության կառավարման մեջ, որպեսզի խուսափենք արտահոսքներից։
sobes.tech AI
Պատասխան AI-ից
Ճառագայթային կապերը առաջանում են, երբ երկու կամ ավելի օբյեկտներ միմյանց հղում են անում, ինչը խոչընդոտում է ավտոմատ հիշողության ազատմանը, հատկապես երբ օգտագործվում է հղումների հաշվարկը:
iOS-ում (Objective-C/Swift)՝ ճառագայթային կապերից առաջացած հիշողության արտահոսքերը կանխելու համար օգտագործվում են՝
- Եղած հղումներ (
weak) — չեն ավելացնում հղումների հաշվիչը, ավտոմատ կերպով զրոյական են դառնում օբյեկտի հեռացման ժամանակ: - Անհատական հղումներ (
unowned) — չեն ավելացնում հաշվիչը, բայց չեն զրոյականանում, երբ օբյեկտը հաստատ գոյություն ունի:
Օրինակ՝ Swift-ում՝
class A {
var b: B?
}
class B {
weak var a: A? // թույլ հղում՝ ցիկլը խուսափելու համար
}
weak կամ unowned օգտագործումը կոտրում է ցիկլը, թույլ տալով ARC-ին ճիշտ ազատել օբյեկտները և խուսափել հիշողության արտահոսքներից։