Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : memory, weak, arc

Как работает weak? Что происходит с weak ссылками, когда объект выгружается из памяти?

Вопрос проверяет понимание weak-ссылок и их поведения при освобождении памяти.

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

weak — это слабая ссылка, которая не увеличивает счетчик ссылок ARC. Если объект удаляется, weak-ссылка автоматически становится nil. Это помогает избежать циклов удержания.

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

Принцип работы weak:

  1. Не влияет на счетчик ссылок — ARC не учитывает weak-ссылки при подсчете.

  2. Автоматическое обнуление — при освобождении объекта weak-ссылка устанавливается в nil.

Пример:

class Person {
    var name: String
    init(name: String) { self.name = name }
    deinit { print("\(name) удален") }
}

var john: Person? = Person(name: "John")
weak var weakJohn = john  // Слабая ссылка

john = nil  // Объект удаляется, weakJohn становится nil
print(weakJohn)  // nil

Где использовать:

  • Для избежания retain cycles (например, в замыканиях или делегатах).

Вывод:
weak — безопасный способ ссылаться на объекты без риска утечек памяти.

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Swift

    Swift

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

#memory

#weak

#arc

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

  • Аватар

    iOS Guru

    Roman Isakov

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