Sobes.tech
Junior — Middle

Эстутүү циклін (Retain Cycle) ээрүү үчүн кандай кадамдар жасалышы керек?

sobes.tech AI

AIден жооп

iOSтогу Retain Cycle (Тууралуулардын айланасы) эки же андан көп объект бири-бирин күчтүү шилтемелер аркылуу кармап турганда пайда болот жана бул алардын эс тутумдан бошотулушуна тоскоол болот, бул эс тутумдун агып кетишине алып келет.

Retain Cycle пайда болушу үчүн төмөнкү кадамдар керек:

  1. Объект A, объект Bге күчтүү шилтеме камтыйт.
  2. Объект B, объект Aга күчтүү шилтеме камтыйт.
  3. Эч бир объект бошотулбайт, анткени шилтемелердин санагычы нөлгө жетпейт.

Мисал:

class A {
    var b: B?
}

class B {
    var a: A?
}

let a = A()
let b = B()
a.b = b
b.a = a // Тууралуулардын айланасы

Айлананы алдын алуу үчүн, шилтемелердин бири алсыз (weak) же ээси жок (unowned) кылынат. Мисалы:

class B {
    weak var a: A?
}

Мындайча айтканда, эки тараптуу күчтүү шилтемелер болбогондо, тууралуулардын айланасы пайда болот жана объекттердин бошотулушу тоскоол болот.