Swiftте шилтемдүү түрлөр үчүн эс тутумду башкаруу кандай жүргүзүлөт?
sobes.tech AI
AIден жооп
Swiftте, шилтемелердин түрлөрү (сыныптар) үчүн эс тутумду башкаруу автоматтык шилтеме эсептөө (ARC, Automatic Reference Counting) аркылуу жүргүзүлөт. Ар бир объект heapте шилтемелердин санын сактайт: бул объектке активдүү шилтемелердин саны. Жаңы шилтеме түзүлгөндө, эсептөөчө өсөт, жана шилтеме колдонулбай калганда, төмөндөйт. Эсептөөчө нөлгө жеткенде, объект автоматтык түрдө эс тутумдан өчүрүлөт.
Мисал:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var a: Person? = Person(name: "Alice") // эсептөөчө = 1
var b = a // эсептөөчө = 2
b = nil // эсептөөчө = 1
a = nil // эсептөөчө = 0, объект өчүрүлөт
Эки объект бири-бирине шилтеме жасаганда, эс тутумдун бошотулушуна тоскоол болгон циклик шилтемелерден (retain cycles) качуу маанилүү. Анын үчүн, алсыз (weak) жана ээ эмес (unowned) шилтемелер колдонулат.
Маалымат түрлөрү (структуралар, энумдар) стекте сакталат жана берилгенде көчүрүлөт, ошондуктан ARC аларга колдонулбайт.