Sobes.tech
Junior — Middle

Dasturda ob'ekt tomonidan egallangan xotira qanday bo'shatiladi?

sobes.tech AI

AIdan javob

iOS da memoria avtomatik ravishda ARC (Automatic Reference Counting) tizimi yordamida asosiy ravishda amalga oshiriladi. Har bir ob'ektning referenslar soni bor, u yangi kuchli referens yaratilganda oshadi va o'chirilganda kamayadi. Son nolga yetganda, ob'ekt avtomatik ravishda yo'q qilinadi va xotira bo'shatiladi.

Agar kodda siklik referenslar (masalan, bir-biriga kuchli referenslarga ega bo'lgan ikki ob'ekt) yuzaga kelsa, xotira bo'shatilmaydi. Bu muammoni hal qilish uchun, zaif (weak) yoki mulk egasi bo'lmagan (unowned) referenslar ishlatiladi.

Misol:

class Person {
    var name: String
    weak var apartment: Apartment? // siklni oldini olish uchun zaif referens
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    unowned let tenant: Person // mulk egasi bo'lmagan referens
    init(unit: String, tenant: Person) {
        self.unit = unit
        self.tenant = tenant
    }
}

Shu tarzda, agar referenslar to'g'ri boshqarilsa, xotira avtomatik ravishda bo'shatiladi.