Sobes.tech
Junior — Middle

Автоматтык шилтемелердин саноосунда автоматтык жана кол менен эс тутумду башкаруунун айырмачылыктарын түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

Автоматтык эс тутумду башкаруу автоматтык шилтемелердин санын эсептөө (ARC) аркылуу ишке ашырылат, анда система өзү объектке шилтемелердин санын көзөмөлдөйт жана шилтемелер саны нөлгө жеткенде эс тутумду бошотот. iOSдо ARC компиляторго интеграцияланган жана программистке retain/release деп атайын чакырууларды жасоонун кереги жок.

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

Негизги айырмачылыктар:

  • Автоматтык (ARC):

    • Компилятор автоматтык түрдө эс тутумду башкаруу чакырууларын кошот.
    • Каталардын, мисалы, эс тутумдун агып кетүүсү же эки эсе бошотуу сыяктуу каталардын мүмкүнчүлүгүн азайтат.
    • Катуу шилтемелер циклин түшүнүүнү талап кылат, ал эми агып кетүүнү алдын алат.
  • Кол менен:

    • Иштеп чыгуучу retain/release методдорун өзү колдойт.
    • Ката кетүү мүмкүнчүлүгү жогору.
    • Объекттердин жашоо мөөнөтүн так көзөмөлдөөгө мүмкүндүк берет.

Swiftте ARC мисалы:

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var p1: Person? = Person(name: "Иван")
var p2 = p1 // шилтемелердин саны автоматтык түрдө өсөт
p1 = nil // объект дагы эле жашайт, анткени p2 аны көрсөтүп турат
p2 = nil // объект бошотулат

Кол менен башкарууда (Objective-C без ARC) explicitly [retain] жана [release] чакырышы керек.