Из моих экспериментов NSData не отвечает на предупреждения памяти.Я протестировал, создав NSData с отображением в памяти и получив доступ к частям файла, чтобы он был загружен в память и, наконец, отправил предупреждения памяти.После предупреждения об использовании памяти не произошло уменьшения использования памяти.Ничто в документации не говорит о том, что память заставит NSData снизить реальное использование памяти в ситуациях нехватки памяти, поэтому я полагаю, что она не реагирует на предупреждения памяти.Например, документация NSCache говорит, что он будет пытаться играть хорошо в отношении использования памяти, плюс мне сказали, что он отвечает на предупреждения о нехватке памяти, которые выдает система.
Также в моих простых тестах на iPod Touch (4-го поколения) мне удалось сопоставить около 600 мегабайт файловых данных с использованием виртуальной памяти +[NSData dataWithContentsOfMappedFile:]
.Затем я начал получать доступ к страницам через свойство bytes в экземпляре NSData.Когда я это сделал, реальная память начала расти, но перестала расти на 30 мегабайт реального использования памяти.Таким образом, способ его реализации ограничивает объем используемой памяти.
Короче говоря, если вы хотите уменьшить использование памяти объектами NSData, лучше всего на самом деле убедиться, что они полностью освобождены, и не полагаться ни на что, что система автоматически делает от вашего имени.