Sobes.tech
Junior — Middle

Swift'dagi axirgi tozalash mexanizmi va uning xotira bilan qanday ishlashini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Swiftda klassik qashqon yig'uvchi (Garbage Collector) mavjud emas, ba'zi boshqa tillarda bo'lgani kabi. O'rniga, avtomatik referenslar hisoblash (ARC - Automatic Reference Counting) mexanizmi qo'llaniladi.

ARC quyidagicha ishlaydi: har bir obyekt xotirada referenslar hisoblagichiga ega bo'lib, u obyektga yangi referens yaratilganda oshadi va referens o'chirilganda yoki nil bo'lsa kamayadi. Agar obyektning referenslar hisoblagichi nolga teng bo'lsa, obyekt avtomatik ravishda xotiradan o'chiriladi.

Misol:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1: Person? = Person(name: "Иван")
var person2 = person1 // referenslar hisoblagichi oshadi
person1 = nil // hisoblagich kamayadi, lekin obyekt yashaydi, chunki person2 unga murojaat qilmoqda
person2 = nil // hisoblagich 0 ga teng bo'ladi va obyekt o'chiriladi

Shu tarzda, Swiftda xotira boshqaruvi avtomatik bo'lib, qo'lda yig'uvchi chaqirishga ehtiyoj qolmaydi, bu esa ishlash tezligini oshiradi va to'g'ri foydalanilsa, xotira oqib ketishining oldini oladi.