Sobes.tech
Junior — Middle

ARC'da avtomatik xotira boshqaruvi mexanizmini va u qanday qilib ishlatilmaydigan obyektlarni ozod qilishini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

ARC (Avtomatik Referanslar Soni) iOS'da xotira boshqarish mexanizmi bo'lib, u avtomatik ravishda ob'ektlarga bo'lgan murojaatlarni hisoblaydi va ular endi kerak bo'lmaganida bo'shatadi.

Ishlash prinsipi:

  • Har bir ob'ektning murojaatlar hisoblagichi (saqlash hisoblagichi) bor.
  • Ob'ektga murojaat yaratilganda, hisoblagich oshadi.
  • Murojaat o'chirilganda, hisoblagich kamayadi.
  • Agar hisoblagich nolga teng bo'lsa, ob'ekt avtomatik ravishda xotiradan o'chiriladi.

ARC kompilatsiya bosqichida ishlaydi va retain/release chaqiruvlarini kodga qo'shadi, shuning uchun dasturchi xotirani qo'lda boshqarishi shart emas.

Swift misoli:

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

var person1: Person? = Person(name: "Иван") // saqlash hisoblagichi = 1
var person2 = person1 // saqlash hisoblagichi = 2
person1 = nil // saqlash hisoblagichi = 1
person2 = nil // saqlash hisoblagichi = 0, Person ob'ekti o'chiriladi

Shu tarzda, ARC faol murojaatlar bo'lmaganda ob'ektlarni avtomatik ravishda bo'shatadi.