Фоновое изображение в контроллере представления приводит к увеличению памяти + UIColor colorWithPatternImage - PullRequest
1 голос
/ 12 октября 2010

Я попробовал 2 различных метода создания фонового изображения для контроллера представления.

Я исследовал это раньше и пришел к выводу, что для хорошей практики памяти вы должны использовать этот метод:

NSString *path = [[NSBundle mainBundle] pathForResource:@"controllerBackground" ofType:@"png" inDirectory:@""];

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:path]]];

При использовании другого метода:

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"controllerBackground.png"]]];

Это не так эффективно, как при использовании метода imageWithContentsOfFile: path.

Однако при тестировании обоих этих методов с использованием инструментов повышения производительности "происходит утечка"«Монитор, я заметил, что происходит очень необычная вещь.

При использовании метода imageWithContentsOfFile:path проблема заключалась в том, что при перемещении назад и вперед в контроллере навигации, загружающем контроллер представления, память будет продолжать увеличиваться в пределахоколо 1 МБ каждый раз при загрузке контроллера представления.

Эта проблема также наблюдается только в новых iOS 4.1 и 4. Похоже, что это не происходит в iOS 3.0 или 3.2.

Ответы [ 2 ]

3 голосов
/ 24 октября 2011

Вот исправление, которое сработало для меня.

UImage *image = [UIImage imageNamed:@"name.png"];
self.view.layer.contents = (id) image.CGImage;

Вы должны импортировать QuartzCore, теперь у меня нет увеличения памяти на 2 МБ каждый раз, когда я выполняю это представление.

0 голосов
/ 06 июня 2011

Аллан, я столкнулся с той же проблемой и обнаружил, что colorWithPatternImage и initWithPatternImage занимают больше памяти, чем ожидалось. Вот ссылка, которая объясняет то же самое.

http://www.cocoabyss.com/coding-practice/colorwithpatternimage-abusive-memory-usage/

Лучше избегать обоих методов для фоновых изображений.

...