Sobes.tech
Junior — Middle

Эстутумду башкаруу контекстинде 'Unowned' термини эмне мааниге ээ экенин түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

iOS (жана Swift) эс тутумду башкаруу контекстинде, "Unowned" термини — бул объектке карата алсыз шилтеме, ал шилтеменин санын (retain count) көбөйтпөйт, бирок ошол шилтемени колдонуу учурунда объекттин бар экенине ишенет.

weak менен айырмачылыктары:

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

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

Мисал:

class Owner {
    var pet: Pet?
}

class Pet {
    unowned let owner: Owner
    init(owner: Owner) {
        self.owner = owner
    }
}

let owner = Owner()
owner.pet = Pet(owner: owner)

Бул мисалда, Pet Ownerга unowned шилтеме сактайт жана Owner Petтен узак жашайт деп эсептелет.