Управление памятью в iOS
Введение
Основная идея управления памятью в iOS — подсчёт ссылок, который управляет жизненным циклом объектов памяти через счётчик ссылок объекта. В плане практики программирования существуют в основном два подхода:
1: MR (Manual Retain-Release), ручной подсчёт ссылок. Создание, уничтожение и изменение счётчика ссылок объектов выполняются разработчиком.
2: ARC (Automatic Reference Counting), автоматический подсчёт ссылок. Он обрабатывает только создание объектов; разработчикам больше не нужно беспокоиться об остальных процессах. Он работает аналогично сборке мусора, но по своей сути всё ещё является подсчётом ссылок.
Возникающие проблемы
Согласно документации Apple, существуют две основные проблемы:
Освобождение или перезапись данных, которые всё ещё используются. Это вызывает повреждение памяти, обычно приводящее к сбоям приложения или, что хуже, к повреждению пользовательских данных.
Неосвобождение данных, которые больше не используются, приводит к утечкам памяти. Выделенная память, которая утекает, не освобождается, даже если она больше никогда не используется. Утечки приводят к росту потребления памяти приложением, что, в свою очередь, может привести к снижению производительности системы или сбоям.
Правила управления памятью
Мы создаём собственные объекты и освобождаем их, когда они больше не нужны.
Удерживайте объекты, которые нужно использовать. Освобождайте эти объекты, когда они больше не нужны.
Не освобождайте объекты, которыми мы не владеем.
Использование инструментов управления памятью
Использование памяти можно проанализировать с помощью инструмента Instruments в Xcode. Он включает такие инструменты, как Activity Monitor, Allocations, Leaks, Zombies и т. д.
Шаги по анализу выделения памяти
1. Откройте существующее приложение.
2. Выберите Product, затем Profile, как показано ниже.

3. Выберите Allocations и Profile в следующем интерфейсе.

4. Мы можем увидеть использование памяти различными объектами.
5. Вы можете переключать контроллеры представления, чтобы проверить, была ли освобождена память.

6. Аналогично мы можем использовать Activity Monitor, чтобы просмотреть выделение памяти в приложении.

7. Эти инструменты могут помочь нам понять использование памяти и где могут возникать утечки памяти.
Другие расширения