Junior — Middle
Системде объект тарабынан ээлеген эс тутумдун бошотулушу кандай өтөт деп түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
iOSто объекттердин эс тутумун бошотуу негизинен ARC (Автоматтык шилтеме эсептөө) механизми аркылуу жүргүзүлөт.
Ар бир объект эс тутумда шилтемелер санагычына ээ: ага активдүү шилтемелердин саны. Шилтеме түзүлгөндө, санагыч өсөт; шилтеме жоголгондо, азаяды. Санагыч нөлгө жеткенде, объект автоматтык түрдө эс тутумдан чыгарыла.
Мисал:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Alex") // шилтемелер саны = 1
var person2 = person1 // шилтемелер саны = 2
person1 = nil // шилтемелер саны = 1
person2 = nil // шилтемелер саны = 0, объект чыгарыла
Эгер циклик шилтемелер (мисалы, бири-бирине шилтемелер) болсо, ARC автоматтык түрдө эс тутумду бошотпойт. Бул маселени чечүү үчүн, алсыз (weak) же менчиксиз (unowned) шилтемелер колдонулат, алар санагычты көбөйтпөйт.