Выбор ответа Junior ARC и циклы ссылок спрашивают часто обновлено
Когда ARC освобождает объект
Вопрос
Когда ARC освобождает экземпляр класса?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Когда счётчик сильных ссылок на него станет равен нулю. ARC (Automatic Reference Counting) вставляет retain и release на этапе компиляции.
Варианты ответа
- Когда сборщик мусора найдёт его недостижимым
- Когда счётчик сильных ссылок на него станет равен нулюправильный ответ
- При уходе приложения в фон или нехватке памяти
- Когда счётчик слабых ссылок станет равен нулю
Разбор
ARC (Automatic Reference Counting) вставляет retain и release на этапе компиляции. Как только сильных ссылок не осталось, вызывается deinit и объект уничтожается. Это детерминированно, без пауз, но, в отличие от трассирующего сборщика мусора, ARC не видит недостижимые циклы. Слабые ссылки объект не удерживают, их счётчик на момент освобождения не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «ARC и циклы ссылок»
- Когда нужен autoreleasepool в Swift
- Цикл ссылок через замыкание-свойство
- Почему делегат объявляют weak
- DispatchQueue.main.async и self
- Как найти утечку памяти в iOS-приложении
- Жизненный цикл объекта в Swift-рантайме
- Когда уместен unowned
- Задача на Swift: какие объекты утекут из-за циклов ссылок