Комментарии 11
"-568h" же вроде?
Как-то даже не для новичков статья, а для тех, кто вообще ни разу не писал ни на чём. Для новичков в программировании.
Кое-что из опыта для тех, кто работает со списками. Помните, что если в таблице ставите бэкграундом «цвет» из картинки, то движок будет применять эту картинку к каждой ячейке, а не к таблице целиком. Это нужно учитывать, особенно, если ячейки разновысотные. Не все текстуры применимы в таких условиях.
[UIImage imageNamed: imageName]
Так делать с большими изображениями категорически нельзя. Это кеширующий метод и изображения будут занимать память даже после освобождения UIImage, при чём простыми способами вы это в Instruments не увидите. Для больших изображений следует использовать
NSString *fileName = [[NSBundle mainBundle] pathForResource:@«foo» ofType:@«png»];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];
Кроме того
[UIView beginAnimations:nil context:NULL];
уже не модно, надо использовать блоки.
Так делать с большими изображениями категорически нельзя. Это кеширующий метод и изображения будут занимать память даже после освобождения UIImage, при чём простыми способами вы это в Instruments не увидите. Для больших изображений следует использовать
NSString *fileName = [[NSBundle mainBundle] pathForResource:@«foo» ofType:@«png»];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];
Кроме того
[UIView beginAnimations:nil context:NULL];
уже не модно, надо использовать блоки.
Так делать с большими изображениями категорически нельзя
Так уже ж с четвертой оси оптимизировали — все выгружается после использования.
В каком смысле «оптимизировали»? То что он кеширующий — и есть оптимизация, он работает как запланировано. И его назначение это загрузка небольших изображений, которые будут использоваться повторно. И в этом смысле он работает так же как раньше, что подтверждается документацией:
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.
Возвращаясь к теме статьи: если у вас на каждом экране есть бэкграунд и всегда используется одна и та же картинка, то можно использовать и его. Но если бэкграундов много или он не на всех экранах, то зря забьёте память.
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 не выгружались никогда.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Красивые фоновые текстуры в iOS