У меня есть UITableView, где каждая ячейка является изображением. Только одна ячейка видна одновременно.
Изображения загружаются по запросу. Пользователь прокручивает до ячейки, и ее изображение загружается.
Это мой метод cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
// this is being compiled for OS 2.0, this is why I am using initWithFrame… it is working fine on 3.0 iPhone.
cell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, 480, 320) reuseIdentifier:MyIdentifier] autorelease];
}
UIImage *imagemX;
UIImageView *myView;
imagemX = [[[UIImage alloc]initWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:[NSString stringWithFormat: @"img%d", (indexPath.row+1)] ofType:@"jpg"]] autorelease];
myView = [[[UIImageView alloc]initWithImage:imagemX] autorelease];
[cell addSubview: myView];
return cell;
}
Проблема с этим кодом заключается в том, что использование памяти всегда увеличивается при прокрутке таблицы, даже если я возвращаюсь к изображениям, показанным ранее. После небольшой прокрутки происходит сбой приложения, вероятно, из-за чрезмерного использования памяти.
Я что-то упустил? Как заставить изображение освободить свои ресурсы, когда оно не видно?