Sobes.tech
Back to questions
Junior — Middle
113

Можете объяснить, что подразумевается под термином 'Unowned' в контексте управления памятью?

Companies where asked
Winline
ITFB
СБЕРСБЕР
О5.ru
СБЕР СболСБЕР Сбол
Суточно.руСуточно.ру
Анор Банк
DNSDNS
AvitoAvito
Umbrella IT
VKVK
bip.ru
ДзенДзен
SimbirsoftSimbirsoft

Answer from AI

sobes.tech AI

В контексте управления памятью в iOS (и Swift) термин "Unowned" означает слабую ссылку на объект, которая не увеличивает счетчик ссылок (retain count), но при этом предполагает, что объект существует во время использования этой ссылки.

Отличия от weak:

  • weak ссылка может стать nil, если объект удаляется, и поэтому объявляется как опциональная.
  • unowned ссылка не является опциональной и не обнуляется автоматически. Если объект, на который ссылается 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 хранит unowned ссылку на Owner, предполагая, что Owner живёт дольше Pet.