Sobes.tech
Junior — Middle

Qanday qilib referens ma'lumot turlarining xotira taqsimoti va bo'shatilishi amalga oshiriladi?

sobes.tech AI

AIdan javob

iOS'da, referans tiplari (masalan, sinflar) uchun xotira dinamik ravishda yonda (heap) ajratiladi. Sinf ob'ekti yaratilganda, tizim unga yonda xotira ajratadi va unga havola (reference) qaytaradi.

Xotirani bo'shatish avtomatik referenslar hisoblash (ARC — Automatic Reference Counting) yordamida amalga oshiriladi. Har bir ob'ekt unga aktiv bo'lgan havolalar sonini saqlovchi hisoblagichga ega. Yangi havola yaratilganda, hisoblagich oshadi, va havola o'chirilganda yoki nil ga teng bo'lsa, kamayadi. Hisoblagich nolga teng bo'lsa, ob'ekt avtomatik ravishda xotiradan o'chiriladi.

Misol:

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

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

Shu tarzda, dasturchi xotirani qo'lda bo'shatishi shart emas — ARC buni avtomatik boshqaradi.