Junior — Middle
Программалоодо Unowned түрүн колдонуунун артыкчылыктары жана кемчиликтери эмнелер?
sobes.tech AI
AIден жооп
Swiftте unowned тиби колдонулат, ал референс санагычын көбөйтпөйт, бирок ал шилтеме кылган объект дайыма колдонуу учурунда бар деп эсептелет.
Артыкчылыктары:
- күчтүү шилтеме циклин алдын алат, эс тутумдун агып кетишин болтурбайт.
- Опционал эмес, андыктан аны ачуу (unwrap) талап кылынбайт.
Кемчиликтери:
- Эгер
unownedшилтеме кылган объект бошотулса, ага жетүү ишке ашырылуу учурунда катаны пайда кылат. - Шилтеме кылган объекттин жашоо цикли шилтеме циклинен узун же ага барабар болушу керек деген ишеним керек.
Колдонуу мисалы:
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 шилтемени сактайт, күчтүү шилтеме циклин алдын алуу үчүн.