Будет ли такое назначение изображения причиной утечки памяти? - PullRequest
1 голос
/ 01 апреля 2009
- (void)viewDidLoad {
    [super viewDidLoad];
    landscape.image = [UIImage imageNamed:@"tenerife1.png"];
}

Я присваиваю новый UIImage свойству изображения объекта UIImageView. Я не уверен, что это приведет к утечке памяти?

Ответы [ 4 ]

6 голосов
/ 01 апреля 2009

Нет, не должно. Старое изображение должно автоматически высвобождаться, когда вы устанавливаете новое, а метод «imageNamed» использует автоматическое освобождение, поэтому с вами все должно быть в порядке.

4 голосов
/ 01 апреля 2009

Примите во внимание, что imageNamed имеет серьезные проблемы с памятью, так как вы теряете контроль над его кешем - то есть: как только вы закончили работу с вашим изображением, вы не сможете восстановить эту память. быстрый поиск в Google позволит узнать, сколько людей столкнулись с проблемами с imageNamed

Я был на технических переговорах по Apple iphone, и парень, выступавший с презентацией, подтвердил ту же чертову вещь - он предложил использовать imageWithContentsOfFile вместо imageNamed

если у вас есть только несколько небольших изображений, в противном случае лучше использовать imageWithContentsOfFile, даже если он немного медленнее - и реализуете собственную логику кэширования - проверьте эту замечательную ссылку о том, как это сделать здесь

1 голос
/ 01 апреля 2009

Зависит от того, как определено свойство image. Если он определен как retain или, я полагаю, даже copy, все должно быть в порядке. В конечном итоге вы попытаетесь сослаться на освобожденную память и вывести программу из строя, если она определена как assign.

0 голосов
/ 01 апреля 2009

Не обычно, но это будет зависеть от того, как вы определили landscape.image. Смотри пост выше. Будьте осторожны с использованием многих из них:

[UIImage imageNamed:@"tenerife1.png"];

Поскольку эти изображения имеют тенденцию к заполнению памяти без освобождения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...