Учебники

iOS — Управление памятью

Управление памятью в iOS изначально было не ARC (Автоматический подсчет ссылок), где мы должны сохранять и освобождать объекты. Теперь он поддерживает ARC, и нам не нужно сохранять и освобождать объекты. Xcode позаботится о работе автоматически во время компиляции.

Проблемы управления памятью

Согласно документации Apple, две основные проблемы в управлении памятью:

  • Освобождение или перезапись данных, которые все еще используются. Это приводит к повреждению памяти и, как правило, приводит к сбою приложения или, что еще хуже, к повреждению пользовательских данных.

  • Не освобождение данных, которые больше не используются, вызывает утечки памяти. Когда выделенная память не освобождается, даже если она никогда не будет использоваться снова, это называется утечкой памяти. Утечки приводят к тому, что ваше приложение использует постоянно увеличивающиеся объемы памяти, что, в свою очередь, может привести к снижению производительности системы или (в iOS) к прекращению работы вашего приложения.

Освобождение или перезапись данных, которые все еще используются. Это приводит к повреждению памяти и, как правило, приводит к сбою приложения или, что еще хуже, к повреждению пользовательских данных.

Не освобождение данных, которые больше не используются, вызывает утечки памяти. Когда выделенная память не освобождается, даже если она никогда не будет использоваться снова, это называется утечкой памяти. Утечки приводят к тому, что ваше приложение использует постоянно увеличивающиеся объемы памяти, что, в свою очередь, может привести к снижению производительности системы или (в iOS) к прекращению работы вашего приложения.

Правила управления памятью

  • У нас есть объекты, которые мы создаем, и мы должны впоследствии отпустить их, когда они больше не нужны.

  • Используйте Сохранить, чтобы получить право собственности на объект, который вы не создали. Вы должны отпустить эти объекты тоже, когда они не нужны.

  • Не отпускайте объекты, которые вам не принадлежат.

У нас есть объекты, которые мы создаем, и мы должны впоследствии отпустить их, когда они больше не нужны.

Используйте Сохранить, чтобы получить право собственности на объект, который вы не создали. Вы должны отпустить эти объекты тоже, когда они не нужны.

Не отпускайте объекты, которые вам не принадлежат.

Обработка памяти в ARC

Вам не нужно использовать релиз и сохранять в ARC. Таким образом, все объекты контроллера представления будут освобождены, когда контроллер представления удален. Точно так же любые подчиненные объекты объекта будут освобождены, когда они будут освобождены. Обратите внимание, что если другие классы имеют строгую ссылку на объект класса, весь класс не будет освобожден. Таким образом, рекомендуется использовать слабые свойства для делегатов.

Инструменты управления памятью

Мы можем проанализировать использование памяти с помощью инструментов инструмента XCode. Он включает в себя такие инструменты, как Activity Monitor, Allocations, Leaks, Zombies и так далее.

Шаги для анализа распределения памяти

Шаг 1 — Откройте существующее приложение.

Шаг 2 — Выберите продукт, а затем профиль, как показано ниже.

Руководство по iOS

Шаг 3 — Выберите Распределения на следующем экране, показанном ниже, и выберите Профиль.

Руководство по iOS

Шаг 4 — Мы увидим распределение памяти для разных объектов, как показано ниже.

Шаг 5 — Вы можете переключаться между контроллерами представления и проверять, правильно ли освобождена память.

Руководство по iOS

Шаг 6 — Аналогично, вместо Распределений мы можем использовать Activity Monitor, чтобы увидеть общую память, выделенную для приложения.

Руководство по iOS

Шаг 7 — Эти инструменты помогают нам получить доступ к потребляемой памяти и определить места, где возможны утечки.