Sobes.tech
Junior — Middle

Yaddaşda saxlama dövrünün nə olduğunu və onun tətbiqlərin işləməsinə necə təsir etdiyini izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Tutaqlıq dövrü (retain cycle) — yaddaş idarəsində iki və ya daha çox obyektin bir-birinə güclü istinadlar (strong references) ilə müraciət etməsidir, bu da ARC (Avtomatik İstinad Sayma) sisteminin onları sərbəst buraxmasına imkan vermir. Nəticədə, yaddaş sızması baş verir, çünki obyektlər artıq lazım olmasa da yaddaşda qalır.

Məsələn, əgər A obyekti B obyektinə güclü istinad edirsə və B obyekti A-ya istinad edirsə, ARC heç birini sərbəst buraxa bilməz, hətta xarici istinadlar olmasa belə.

Retain dövrünü qarşısını almaq üçün adətən zəif (weak) və ya sahibsiz (unowned) istinadlar istifadə olunur. Məsələn, nümayəndələr (delegates) çox vaxt weak kimi elan edilir.

Swift-də nümunə:

class Person {
    var apartment: Apartment?
}

class Apartment {
    weak var tenant: Person? // dövrü qarşısını almaq üçün weak istinad
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person

Əgər tenant güclü istinad olsaydı, obyektlər sərbəst buraxılmazdı və bu, retain dövrü yaradar.

Tətbiqlərin işləməsinə təsiri: retain dövrləri yaddaş sızmalarına səbəb olur, bu da yaddaş istifadəsinin artmasına, performansın aşağı düşməsinə və hətta tətbiqin çökməsinə gətirib çıxara bilər.