Кое-что из опыта для тех, кто работает со списками. Помните, что если в таблице ставите бэкграундом «цвет» из картинки, то движок будет применять эту картинку к каждой ячейке, а не к таблице целиком. Это нужно учитывать, особенно, если ячейки разновысотные. Не все текстуры применимы в таких условиях.
Так делать с большими изображениями категорически нельзя. Это кеширующий метод и изображения будут занимать память даже после освобождения UIImage, при чём простыми способами вы это в Instruments не увидите. Для больших изображений следует использовать
В каком смысле «оптимизировали»? То что он кеширующий — и есть оптимизация, он работает как запланировано. И его назначение это загрузка небольших изображений, которые будут использоваться повторно. И в этом смысле он работает так же как раньше, что подтверждается документацией:
If you have an image file that will only be displayed once and wish to ensure that it does not get added to the system’s cache, you should instead create your image using imageWithContentsOfFile:. This will keep your single-use image out of the system image cache, potentially improving the memory use characteristics of your app.
Возвращаясь к теме статьи: если у вас на каждом экране есть бэкграунд и всегда используется одна и та же картинка, то можно использовать и его. Но если бэкграундов много или он не на всех экранах, то зря забьёте память.
Оптимизировали в том плане, что как раз таки выгружаются все не используемые картинки в момент прихода memory warnings, давным-давно, картинки загруженные с imageNamed не выгружались никогда.
В приложении с большим количеством картинок На 5 или 6 оси сталкивался с этой проблемой, на iPad заканчивалась память при использовании этого метода. При переходе на imageWithContentsOfFile проблема пропала.
Красивые фоновые текстуры в iOS