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 автоматтык түрдө аны башкарат.