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.