iOS использует автоматический подсчет ссылок (ARC) для управления памятью. ARC автоматически освобождает объекты, как только на них перестают ссылаться.
Основные концепции:
nil.nil при освобождении объекта. При попытке доступа к освобожденному объекту через unowned ссылку возникает ошибка выполнения.Циклы сильных ссылок (Retain Cycles): Возникают, когда два или более объекта имеют сильные ссылки друг на друга, не позволяя ни одному из них быть освобожденным. Решаются с помощью weak или unowned ссылок.
Пример цикла сильных ссылок и его решение:
swift
Решение с использованием weak:
swift
Unowned vs Weak:
weak, когда ссылка может стать nil (объект может быть освобожден первым).unowned, когда ссылка всегда будет иметь значение (объект, на который ссылаются, имеет тот же или более длительный жизненный цикл).Замыкания (Closures) и циклы ссылок:
Замыкания могут захватывать ссылки на объекты, создавая циклы сильных ссылок. Это решается с помощью списка захвата (capture list).
Пример:
swift
Отладка проблем с памятью: