Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про IOS: weak, unowned, optional, ownership

В чём разница между weak и unowned? Где предпочтительнее использовать unowned?

Вопрос проверяет понимание типов ссылок Swift и выбор подходящего типа для разных сценариев управления памятью.

Короткий ответ

weak хранит ссылку, которая автоматически обнуляется, когда объект деинициализируется, и требует опционального типа. unowned — неконтролируемая ссылка, не обнуляется и объявляется не-опциональным. unowned используют, когда зависимый объект гарантированно живет дольше или так же долго, как и владелец.

Длинный ответ

weak ссылка:

  • Объявляется как опциональная (weak var delegate: Delegate?).

  • ARC не увеличивает счётчик.

  • Автоматически становится nil при освобождении объекта.

unowned ссылка:

  • Объявляется как не-опциональная (unowned let owner: Owner).

  • ARC не увеличивает счётчик.

  • Не становится nil — при обращении к уже освобождённому объекту произойдёт креш.

Когда использовать unowned:

  • Когда объект B не может существовать без A и гарантированно живёт не дольше A.

  • Пример: замыкание в методе класса, которое ссылается на self без захвата в weak.

Пример:

class Owner {
    	var child: Child?
}
class Child {
    	unowned let owner: Owner
    	init(owner: Owner) { self.owner = owner }
}

let owner = Owner()
owner.child = Child(owner: owner)
// owner и child будут освобождены без утечки

Вывод:
Выбор между weak и unowned зависит от жизненного цикла объектов. unowned быстрее, но безопасен лишь в сценариях строго управляемых связей.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • IOS

    IOS

Ключевые слова

#weak

#unowned

#optional

#ownership

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.