Junior — Middle
Yadda yaddaş idarəsində dövri əlaqələrdən necə qurtulmaq olar, sızmaların qarşısını almaq üçün?
sobes.tech Süni İntellekt
AI-dan cavab
Dairəvi əlaqələr, iki və ya daha çox obyekt bir-birinə müraciət etdikdə baş verir və bu, xüsusən də istinad sayımı istifadə edilərkən avtomatik yaddaşın sərbəst buraxılmasını çətinləşdirir.
iOS-da (Objective-C/Swift), dairəvi əlaqələrdən yaranan yaddaş sızıntılarını qarşısını almaq üçün aşağıdakı metodlar istifadə olunur:
- Zəif əlaqələr (
weak) — istinad sayğacını artırmır, obyekt silindikdə avtomatik olaraq nil-ə çevrilir. - Müəyyən olmayan əlaqələr (
unowned) — sayğacı artırmır, lakin nil-ə çevrilmir və obyektin mütləq mövcud olduğu hallarda istifadə olunur.
Məsələn, Swift-də:
class A {
var b: B?
}
class B {
weak var a: A? // dairəni pozmaq üçün zəif əlaqə
}
weak və ya unowned istifadə etmək dairəni qırır, ARC obyektləri düzgün şəkildə sərbəst buraxmağa imkan verir və yaddaş sızıntılarını qarşısını alır.