Automatic Reference Counting (ARC) — это система управления памятью в Swift. Она отслеживает количество сильных ссылок на каждый экземпляр класса. Когда это количество падает до нуля, экземпляр автоматически освобождается и его память высвобождается.
retain и release в твой код, поэтому никаких накладных расходов от фонового процесса нетВ отличие от сборки мусора, которая периодически запускается во время выполнения программы, сканируя и очищая неиспользуемые объекты, ARC:
Основное ограничение ARC в том, что он не может автоматически разрешить циклические ссылки. Цикл возникает, когда два экземпляра держат сильные ссылки друг на друга — из-за этого счётчик никогда не достигает нуля.
Person → Apartment
Apartment → Person // цикл: ни один из них никогда не освобождается
Чтобы разорвать циклы, Swift предоставляет два типа слабых ссылок:
weak — опциональная ссылка, которая становится nil при освобождении экземпляраunowned — неопциональная ссылка, используется когда объект, на который ты ссылаешься, гарантированно живёт дольше текущегоВыбор правильного типа ссылки — это ответственность разработчика, и от него зависит, будут ли в приложении утечки памяти.
ARC работает во время компиляции, автоматически вставляя вызовы retain и release, что исключает overhead управления памятью во время выполнения по сравнению с garbage collection.
Новый — ещё не проверен сообществом
Вы