Sobes.tech
Junior — Middle

Чӣ гуна кори автоматӣ ва дастӣ бо хотира дар iOS амалӣ карда мешавад ва кадом механизмҳо барои идоракунии захираҳо истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Дар iOS, идоракунии хотира асосан ду роҳро дар бар мегирад: автоматӣ ва дастӣ.

  1. Идоракунии автоматии хотира (ARC — ҳисобкунии автоматии истинодҳо)

    ARC як механизмест, ки дар компилятор ҷойгир шудааст ва ба таври автоматӣ даъватҳои retain/release-ро барои объектҳои Objective-C ва Swift илова мекунад. Он шумораи истинодҳоро ба объект ҳисоб мекунад ва вақте ки ҳисобчик ба сифр мерасад, хотираро озод мекунад.

    Мисол:

    class Person {
        var name: String
        init(name: String) {
            self.name = name
        }
    }
    
    var p1: Person? = Person(name: "Иван")
    var p2 = p1 // ҳисобкунии истинодҳо зиёд мешавад
    p1 = nil // ҳисоб кам мешавад
    p2 = nil // объект озод мешавад
    
  2. Идоракунии дастӣ дар хотира

    Дар версияҳои кӯҳнаи iOS (пеш аз ARC), таҳиягарон ба таври дастӣ методҳои retain, release ва autorelease-ро барои идоракунии давраи зиндагии объектҳо даъват мекарданд.

  3. Идоракунии захираҳо

    Ғайр аз хотира, барои идоракунии захираҳо (файлҳо, пайвастагиҳои шабакавӣ, таймерҳо) моделҳо ба монанди deinit дар Swift барои озод кардани захираҳо ҳангоми нобуд кардани объект истифода мешаванд.

    Ҳамчунин, сохторҳои васеъ истифода мешаванд, мисли autoreleasepool барои идоракунии объектҳои муваққатӣ.

Бинобар ин, ARC корро бо хотира хеле содда мекунад, хавфи ҷорӣ шудани сӯроқҳоро кам мекунад, ва идоракунии дастӣ камтар истифода мешавад ва танҳо дар ҳолатҳои махсус.