Sobes.tech
Junior — Middle

Дар кадом маҳдудият истифодаи истинодҳои заиф ва хусусиятҳои рафтори онҳо чист?

sobes.tech AI

Ҷавоб аз AI

Захирандаги ишора (weak references) iOSда кучли ишоралар цикли ва хотирани ўғирлашларини олдини олиш учун қўлланилади. Улар объектнинг ишора санагичини оширмайди, шунинг учун объект, ҳатто уга захирандаги ишора бўлса ҳам, деинициализация қилина олади.

Хусусиятлар ва чекловлар:

  • Агар захирандаги ишорага ишора қилаётган объект ўчирилса, захирандаги ишора автоматик равишда nil бўлади.
  • Захирандаги ишоралар автоматик нуллашни қўллаб-қувватламайдиган турлар билан ишлатилмайди (масалан, ARC бошқарувидаги объектлар).
  • Захирандаги ишоралардан фойдаланганда, уларни ҳар доим nil билан текшириш керак, шунинг учун авариялардан сақланиш учун.

Масалан:

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

var person: Person? = Person(name: "Иван")
weak var weakPerson = person

person = nil
print(weakPerson) // nil чиқади, чунки объект ўчирилган

Шу тарзда, захирандаги ишоралар хотирани бошқаришда ёрдам беради, аммо уларни эҳтиёт билан ишлатиш ва nil текшируви талаб қилинади.