Sobes.tech
Junior — Middle

Эсептөө жана шилтемелүү маалыматтардын түрлөрү үчүн эс тутумду бөлүү жана бошотуу кандай болот?

sobes.tech AI

AIден жооп

iOS'то, үчүн шилтемелердин түрлөрү (мисалы, класстар) динамикалуу түрдө heapте бөлүнөт. Класс объектисин түзгөндө, системасы ага heapте эс тутум бөлүп, ошол объектке шилтемени кайтарат.

Эстутумду бошотуу автоматтык шилтемелердин саноо (ARC — Automatic Reference Counting) аркылуу жүргүзүлөт. Ар бир объект актив шилтемелердин санын сактайт — ага актив шилтемелердин саны. Жаңы шилтеме түзүлгөндө, саноочу өсөт, ал эми шилтеме өчүрүлүп же nil болсо, азаяды. Саноочу нөлгө жеткенде, объект автоматтык түрдө эс тутумдан алынып салынат.

Мисал:

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

var person1: Person? = Person(name: "Иван") // шилтемелердин саны = 1
var person2 = person1 // шилтемелердин саны = 2
person1 = nil // шилтемелердин саны = 1
person2 = nil // шилтемелердин саны = 0, Person объектисин эс тутумдан алынып салынат

Ушул жол менен, иштеп чыгуучу эс тутумду кол менен бошотушу керек эмес — ARC автоматтык түрдө аны башкарат.