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ке объекттерди туура бошотууга жана эс тутум агып кетүүнү алдын алууга мүмкүндүк берет.