Junior — Middle
Կարող եք բացատրել, թե ինչպիսի տեսակի հիշողության արտահոսքեր կան ծրագրերում?
sobes.tech AI
Պատասխան AI-ից
iOS հավելվածներում հիմնական տեսակի հիշողության արտահոսքերը կապված են օբյեկտների մասին սխալ կառավարման հետ՝
- ուժեղ հղումների ցիկլեր (Strong Reference Cycles) — երբ երկու օբյեկտ ունեն ուժեղ հղումներ միմյանց, և ոչ մեկը չի կարող ազատվել:
- փակմանների (Closures) պատճառով արտահոսքներ — եթե փակումը ուժեղ հղումով բռնում է self-ը, դա կարող է հանգեցնել ցիկլի:
- չազատված ռեսուրսներ — օբյեկտներ, որոնք չեն ազատվում deinit-ի բացակայության կամ սխալ օգտագործման պատճառով:
օրինակ՝ ուժեղ հղումների ցիկլից խուսափելու համար՝
class Person {
var apartment: Apartment?
}
class Apartment {
var tenant: Person?
}
let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // ուժեղ հղումների ցիկլ
Դրա կանխարգելման համար օգտագործվում են թույլ (weak) կամ ոչ սեփական (unowned) հղումներ։