Вопрос проверяет понимание жизненного цикла объекта, работы ARC и того, как объект проходит путь от создания до деинициализации.
Объект в ARC проходит несколько логических состояний: создание, активное использование и освобождение. Пока на объект есть хотя бы одна сильная ссылка, он считается живым. Когда счетчик ссылок падает до нуля, объект деинициализируется. После этого память освобождается, а weak-ссылки зануляются. Эти состояния важны для понимания утечек и retain cycle.
Чтобы уверенно работать с ARC, важно понимать, что объект не просто «есть или нет», а проходит несколько этапов жизни.
Создание объекта
Объект создается в heap, счетчик сильных ссылок устанавливается в 1.
Обычно это происходит при вызове init.
Активное использование
Объект имеет одну или несколько сильных ссылок.
Он доступен для работы и может участвовать в связях с другими объектами.
Уменьшение счетчика ссылок
Когда сильные ссылки удаляются, счетчик уменьшается.
Объект все еще жив, пока счетчик больше нуля.
Деинициализация
Когда счетчик становится равен нулю:
вызывается deinit
выполняется очистка ресурсов
weak ссылки зануляются
Освобождение памяти
После завершения deinit память под объект возвращается системе.
ARC работает только с сильными ссылками
weak ссылки не продлевают жизнь объекта
unowned не увеличивает счетчик и не зануляется автоматически
Понимание состояний объекта в ARC помогает осознанно управлять ссылками и предотвращать утечки памяти.