Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : strong reference, unowned reference, arc

Расскажи про strong, weak и unowned ссылки. Сравни weak и unowned.

Этот вопрос проверяет понимание различных типов ссылок в Swift и их использования для управления памятью в ARC.

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

Strong ссылки увеличивают счётчик ссылок и удерживают объект в памяти. Weak ссылки не увеличивают счётчик и становятся nil, когда объект удаляется. Unowned ссылки также не увеличивают счётчик, но вызывают crash при обращении к удалённому объекту. Weak безопаснее, но unowned немного быстрее.

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

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

1. Strong references:

  • Увеличивают счётчик ссылок на объект.

  • Объект remains in memory до тех пор, пока есть хотя бы одна strong ссылка.

2. Weak references:

  • Не увеличивают счётчик ссылок.

  • Всегда optional и автоматически становятся nil, когда объект удаляется.

  • Используются для breaking cycles в parent-child отношениях.

3. Unowned references:

  • Также не увеличивают счётчик ссылок.

  • Не optional и предполагают, что объект всегда существует.

  • Если объект удалён, обращение к unowned ссылке вызывает crash.

  • Используются, когда lifetime объекта точно известен (например, делегаты).

Сравнение weak vs unowned:

  • Безопасность: Weak безопаснее, так как становится nil.

  • Производительность: Unowned немного быстрее, так как не требует проверки на nil.

  • Использование: Weak для опциональных связей, unowned для гарантированно существующих объектов.

Пример:

class Parent {
    weak var child: Child? // weak чтобы избежать цикла
}

class Child {
    unowned let parent: Parent // unowned, так как parent всегда существует
}
  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Swift

    Swift

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

#strong reference

#unowned reference

#arc

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

  • Аватар

    iOS Guru

    Roman Isakov

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