В контексте iOS/macOS разработка на Swift/Objective-C использует не сборщик мусора (GC), а автоматический подсчет ссылок (Automatic Reference Counting, ARC).
ARC автоматически управляет памятью, подсчитывая количество сильных ссылок на каждый экземпляр класса (и замыкания с захватом). Когда счетчик сильных ссылок обнуляется, система освобождает память, занимаемую объектом.
Основные моменты ARC:
- Сильные ссылки (Strong): Увеличивают счетчик ссылок. Объект остается в памяти, пока на него есть хотя бы одна сильная ссылка.
- Слабые ссылки (Weak): Не увеличивают счетчик ссылок. Используются для предотвращения циклов сильных ссылок. Ссылаются на объект опционально, становятся nil, когда объект освобождается.
- Бесхозные ссылки (Unowned): Не увеличивают счетчик ссылок. Используются, когда известен жизненный цикл объектов и один объект всегда будет существовать, пока существует другой. Ссылка не опциональна. Если объект, на который ссылается unowned, освобожден, п
В контексте iOS/macOS разработка на Swift/Objective-C использует не сборщик мусора (GC), а автоматический подсчет ссылок (Automatic Reference Counting, ARC).
ARC автоматически управляет памятью, подсчитывая количество сильных ссылок на каждый экземпляр класса (и замыкания с захватом). Когда счетчик сильных ссылок обнуляется, система освобождает память, занимаемую объектом.
Основные моменты ARC:
- Сильные ссылки (Strong): Увеличивают счетчик ссылок. Объект остается в памяти, пока на него есть хотя бы одна сильная ссылка.
- Слабые ссылки (Weak): Не увеличивают счетчик ссылок. Используются для предотвращения циклов сильных ссылок. Ссылаются на объект опционально, становятся nil, когда объект освобождается.
- Бесхозные ссылки (Unowned): Не увеличивают счетчик ссылок. Используются, когда известен жизненный цикл объектов и один объект всегда будет существовать, пока существует другой. Ссылка не опциональна. Если объект, на который ссылается unowned, освобожден, п