Sobes.tech
Junior — Middle

Эмне үчүн циклдик шилтемелерди жадат башкарууда жок кылуу керек, чыгымдарды алдын алуу үчүн?

sobes.tech AI

AIден жооп

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

iOSта (Objective-C/Swift) цикл шилтемелеринен улам эс тутум агып кетүүнү алдын алуу үчүн колдонулат:

  • Слаб шилтемелер (weak) — шилтемелердин санын көбөйтпөйт, объект жоголгондо автоматтык түрдө nil кылынат.
  • Көз каранды эмес шилтемелер (unowned) — санын көбөйтпөйт, бирок nil кылынбайт, объект ишеничтүү түрдө бар экенине ишенсе колдонулат.

Мисалы, Swiftте:

class A {
    var b: B?
}

class B {
    weak var a: A?  // циклден качуу үчүн слаб шилтеме
}

weak же unowned колдонуу циклди үзүп, ARCке объекттерди туура бошотууга жана эс тутум агып кетүүнү алдын алууга мүмкүндүк берет.