Добро пожаловать в пул совместно используемой памяти без ВМ .... Здесь вы мало что можете сделать, но есть несколько вещей (и, возможно, это действительно ваша ошибка, и вы можете ее полностью исправить). По этой причине разработчики игр часто рекомендуют своим клиентам перезагрузиться, прежде чем запускать их, поэтому вам может понадобиться оказаться в одной лодке, если вам действительно нужно много памяти, чтобы быть эффективным.
Конечно, вы должны попытаться свести к минимуму ваш собственный объем памяти. Но вам также следует избегать чрезмерной фрагментации памяти. Иногда проблема не в том, что нет памяти; просто нет достаточно больших блоков. Иногда лучше использовать Mutable и продолжать его модифицировать, а не генерировать новый неизменный объект. Это особенно верно для больших строк NSStrings, которые действительно могут очистить память.
Имейте в виду, что UIImage +imageNamed:
сохранит изображение после того, как вы его отпустите, поэтому, если они вам больше не нужны, вам нужно очистить их. Установите его имя равным nil, прежде чем выпускать его, чтобы остановить кеширование.
Обязательно запустите ваше приложение в разделе Инструменты. Возможно, вы едите больше памяти, чем думаете.
Не забудьте автозапуск пула. Если вы генерируете много автоматически выпущенных объектов в одном цикле событий, вам может потребоваться периодически истощать пул, чтобы не переполнять память. Пики памяти могут привести к внезапному уничтожению программы с умеренными требованиями к памяти.