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

Управление памятью приложения является процессом выделения памяти в течение времени выполнения Вашей программы, использование его и освобождение его, когда Вы сделаны с ним. Правильно написанная программа использует как можно меньше память. В Objective C это может также быть замечено как способ распределить владение ресурсов ограниченной памяти среди многих частей данных и кода. Когда Вы закончили работать через это руководство, у Вас будет знание, необходимо управлять памятью приложения путем явного управления жизненным циклом объектов и освобождения их, когда они больше не необходимы.

Несмотря на то, что управление памятью обычно рассматривают на уровне отдельного объекта, Ваша цель состоит в том, чтобы фактически управлять графами объектов. Вы хотите удостовериться, что у Вас больше нет объектов в памяти, чем Вам фактически нужно.

../Art/memory_management_2x.png../Art/memory_management_2x.png

Сразу

Objective C обеспечивает два метода управления памятью приложения.

  1. В методе, описанном в этом руководстве, называемом “ручным сохранять-выпуском” или MRR, Вы явно управляете памятью путем отслеживания объекты, которыми Вы владеете. Это реализовано с помощью модели, известной как подсчет ссылок, что Фундаментальный класс NSObject обеспечивает в сочетании со средой выполнения.

  2. В Автоматическом Подсчете ссылок или ARC, система использует ту же систему подсчета ссылок в качестве MRR, но это вставляет надлежащие вызовы метода управления памятью Вас во время компиляции. Вы строго призваны использовать ARC для новых проектов. При использовании ARC обычно нет никакой потребности понять конкретную реализацию, описанную в этом документе, несмотря на то, что это май в некоторых ситуациях полезно. Для больше о ARC, посмотрите Переход к Информации о версии ARC.

Хорошие методы предотвращают связанные с памятью проблемы

Существует два основных вида проблемы, следующие из неправильного управления памятью:

Размышление об управлении памятью с точки зрения подсчета ссылок, однако, часто контрпроизводительно, потому что Вы склонны рассматривать управление памятью с точки зрения подробных данных реализации, а не с точки зрения Ваших фактических целей. Вместо этого необходимо думать об управлении памятью с точки зрения монопольного использования объекта и графов объектов.

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

Посмотрите политику управления памятью.

Несмотря на то, что базовая политика является прямой, существуют некоторые практические шаги, которые можно предпринять, чтобы сделать управляющую память проще, и помочь гарантировать, что программа остается надежной и устойчивой, одновременно минимизируя ее требования к ресурсам.

Посмотрите практическое управление памятью.

Блоки пула автовыпуска обеспечивают механизм, посредством чего можно отправить объекту «задержанный» release сообщение. Это полезно в ситуациях, где Вы хотите оставить владение объекта, но хотеть избежать возможности его освобождаемый сразу (такой как тогда, когда Вы возвращаете объект из метода). Когда Вы могли бы использовать свои собственные блоки пула автовыпуска, существуют случаи.

Посмотрите Используя блоки пула автовыпуска.

Используйте аналитические инструменты для отладки проблем памяти

Для идентификации проблем с кодом во время компиляции можно использовать Лязг Статический Анализатор, встроенный в XCode.

Если проблемы управления памятью действительно, тем не менее, возникают, существуют другие инструменты и методы, которые можно использовать, чтобы идентифицировать и диагностировать проблемы.