Sobes.tech
Junior — Middle

iOSda avtomatik va qo'lda xotira bilan ishlash qanday amalga oshiriladi va resurslarni boshqarish uchun qanday mexanizmlar ishlatiladi?

sobes.tech AI

AIdan javob

iOS-da xotira boshqaruvi ikki asosiy usul bilan amalga oshiriladi: avtomatik va qo'lda.

  1. Avtomatik xotira boshqaruvi (ARC — Avtomatik Referenslar Hisobi)

    ARC — bu kompilyatorga integratsiya qilingan mexanizm bo'lib, Objective-C va Swift ob'ektlari uchun retain/release chaqiruvlarini avtomatik qo'shadi. U ob'ektga bo'lgan murojaatlarni hisoblaydi va hisoblagich nolga teng bo'lsa, xotirani bo'shatadi.

    Misol:

    class Person {
        var name: String
        init(name: String) {
            self.name = name
        }
    }
    
    var p1: Person? = Person(name: "Иван")
    var p2 = p1 // murojaatlar soni oshadi
    p1 = nil // son kamayadi
    p2 = nil // ob'ekt bo'shatiladi
    
  2. Qo'lda xotira boshqaruvi

    Eski iOS versiyalarida (ARCdan oldin), dasturchi ob'ektlarning hayot aylanishini boshqarish uchun retain, release va autorelease metodlarini qo'lda chaqirardi.

  3. Resurslarni boshqarish

    Xotira bilan birga, fayllar, tarmoq ulanishlari, timerlar kabi resurslarni boshqarish uchun deinit kabi Swiftda konstruktsiyalar keng qo'llaniladi va ob'ekt yo'q qilinayotganda resurslar bo'shatiladi.

    Shuningdek, vaqtinchalik ob'ektlarni boshqarish uchun autoreleasepool kabi tuzilmalar keng qo'llaniladi.

Shu tarzda, ARC xotira bilan ishlashni sezilarli darajada soddalashtiradi, oqib ketish ehtimolini kamaytiradi, va qo'lda boshqarish kamdan-kam hollarda va faqat maxsus holatlarda qo'llaniladi.