Sobes.tech
Junior — Middle

Sistem ichida ob'ekt tomonidan egallangan xotira qanday bo'shatilishini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

iOS da obyektlarning xotiradan chiqarilishi asosan ARC (Avtomatik Referenslar Hisobi) mexanizmi yordamida amalga oshiriladi.

Har bir obyekt xotirada referenslar hisobiga ega — unga aktiv ravishda murojaat qilayotganlar soni. Ob'ektga murojaat yaratilganda, hisob oshadi; murojaat o'chirilganda, kamayadi. Hisob nolga teng bo'lsa, obyekt avtomatik ravishda xotiradan chiqariladi.

Misol:

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

var person1: Person? = Person(name: "Alex") // referenslar hisob = 1
var person2 = person1 // referenslar hisob = 2
person1 = nil // referenslar hisob = 1
person2 = nil // referenslar hisob = 0, obyekt chiqariladi

Agar siklik murojaatlar (masalan, bir-biriga murojaat qiladigan ikki obyekt) bo'lsa, ARC avtomatik ravishda xotirani bo'shatmaydi. Buning uchun, zaif (weak) yoki egalik qilmaydigan (unowned) murojaatlar ishlatiladi, ular hisobni oshirmaydi.