Как мне освободить UIImageView, выделенный таким образом?

#iphone #memory-leaks #uiimageview #release

#iPhone #утечки памяти #uiimageview #освободить

Вопрос:

Я выделил UIImageView внутри метода setBackground моей ячейки tableview следующим образом:

  [cell setBackgroundView:[[UIImageView alloc]initWithImage:rowBackground]];
  

Когда я запускаю Analyse в XCode 4, он выделяет эту строку как возможную утечку памяти. Как мне освободить этот UIImageView, если я не получил указатель на ссылку из вызова release?

Ответ №1:

Вы можете либо выделить его по-другому (т. Е. Сохранить его в ivar и выпустить его), либо вызвать autorelease для него, вот так:

 [cell setBackgroundView:[[[UIImageView alloc]initWithImage:rowBackground] autorelease]];
  

Комментарии:

1. Я только что разобрался с этим. Я пробовал авторелизинг таким образом, но по какой-то причине Code Sense это не понравилось. Сделал это вместо того, чтобы это сработало.

2. cell.backgroundView = [[[Выделение UIImageView]initWithImage:rowBackground] авторелиз];

Ответ №2:

Отправьте ему сообщение об авторелизе:

 [cell setBackgroundView:[[[UIImageView alloc]initWithImage:rowBackground] autorelease]];
  

Сообщением об автоматическом выпуске вы заявляете, что не хотите владеть объектом за пределами области, в которой вы отправили сообщение.