Методы UIImage imageNamed: и imageWithContentsOfFile: делать несколько разные вещи. imageNamed загружает изображение в специальный системный кеш, а затем будущие вызовы с этим путем будут возвращать изображение в кеш, а не перезагружать его с диска. imageWithContentsOfFile просто загружает изображение по указанному вами пути, но не кэширует. Несколько вызовов в imageWithContentsOfFile для одного и того же изображения приведут к нескольким копиям в памяти.
iOS, похоже, не очищает кеш (ну или вообще, я не уверен), когда выдается предупреждение о памяти, что может привести к прекращению использования приложений из-за отсутствия свободной памяти. UIImages, загруженные с помощью imageWithContentsOfFile, реагируют на предупреждения о памяти, очищая их изображения и при необходимости перезагружая их, что может объяснить, почему ваш всплеск памяти исчез.
Кэш-память, как представляется, намного больше в симуляторе, чем в реальном аппаратном обеспечении, проблемы и сбои, которые я видел с помощью UIImages с использованием imageName, произошли только на устройстве. Остерегайтесь при тестировании на симуляторе!
Единственная причина, по которой я могу видеть использование imageName, то же изображение используется много раз в ваших представлениях. В качестве альтернативы вы можете реализовать свой собственный кеш изображения и получить преимущества использования кеша, который вы можете контролировать, как описано здесь: http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/
Вы тестируете устройство или симулятор? – shosti
Да, я тестирую симулятор, но я также проведу несколько тестов на устройстве. Я получаю приложение к сбою после широкого использования, но, возможно, проблема выше не виновата. Обновит вас больше результатов. – franz