Как освободить UIImageView в UITableViewCell? - PullRequest
1 голос
/ 24 ноября 2011

У меня есть выход UIImage в TableViewCell, который я буду использовать позже в UITableView. Когда я проверяю это в инструментах, у меня возникает утечка памяти в UIImageView. Я не выпускаю UIImageView в UITableViewCell, потому что я получаю exc_bad_access, если я выпускаю его в tavleViewCell.

Мой вопрос: где мне выпустить этот UIImageView?

Обновление

CustomCell.h

@interface CustomCell : UITableViewCell {
IBOutlet UIImageView *customImage;
}

@property(nonatomic, retain) UIImageView *customImage;

@end

CustomViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

cell.customImage.hidden = [[self.customImageList objectAtIndex:indexPath.row] boolValue];

return cell; 
}

Ответы [ 3 ]

0 голосов
/ 24 ноября 2011

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

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

0 голосов
/ 24 ноября 2011

Во-первых, давайте определимся, что вы имеете в виду. Когда мы говорим об истинной утечке памяти, тогда выделяется куча, но в вашем коде больше нет указателей на нее. Это действительно утечка, потеря и не может быть повторно использована. Если инструмент Утечки идентифицирует это как утечку, это означает, что это - утечка такого рода, с которой не просто жить, а не ложная утечка, как некоторые предположили.

Если вы не видите его в инструменте «Утечки», это может привести к утечке или к другому типу проблемы с памятью, который некоторые также называют утечкой памяти, например, из-за оставленной памяти.

В любом случае, пожалуйста, дайте нам знать, что вызывает у вас утечку, и вам нужно опубликовать свой код для получения дополнительной помощи.

0 голосов
/ 24 ноября 2011

попробуйте установить его на nil т.е. в dealloc:

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