Вопрос проверяет понимание ARC и типичных проблем управления памятью в iOS.
Основные проблемы ARC связаны с циклическими ссылками и непреднамеренным удержанием объектов. ARC не может освободить объекты, которые ссылаются друг на друга. Также сложно отследить, кто именно удерживает объект. Это приводит к утечкам памяти.
В iOS используется ARC — автоматический подсчет ссылок. Он упрощает работу с памятью, но не решает все проблемы.
Определение:
ARC освобождает объект, когда счетчик сильных ссылок становится равным нулю.
Разработчик:
не освобождает память вручную
управляет типами ссылок
Чаще всего встречаются:
циклические сильные ссылки
захват self в замыканиях
долгоживущие singleton-объекты
подписки, не освобожденные вовремя
class A {
var b: B?
}
class B {
var a: A?
}
Оба объекта никогда не освободятся.
ARC упрощает управление памятью, но требует осознанной работы с сильными и слабыми ссылками.