У меня есть следующий код:Как кэшировать изображения для просмотра таблицы?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//P1
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell Identifier"] autorelease];
cell.textLabel.text = [photoNames objectAtIndex:indexPath.row];
//Check if object for key exists, load from cache, otherwise, load
id cachedObject = [_cache objectForKey:[photoURLs objectAtIndex:indexPath.row]];
if (cachedObject == nil) {
//IF OBJECT IS NIL, SET IT TO PLACEHOLDERS
cell.imageView.image = cachedObject;
[self setImage:[UIImage imageNamed:@"loading.png"] forKey:[photoURLs objectAtIndex:indexPath.row]];
[cell setNeedsLayout];
} else {
//fetch imageData
dispatch_async(kfetchQueue, ^{
//P1
NSData *imageData = [NSData dataWithContentsOfURL:[photoURLs objectAtIndex:indexPath.row]];
dispatch_async(dispatch_get_main_queue(), ^{
cell.imageView.image = [UIImage imageWithData:imageData];
[self setImage:cell.imageView.image forKey:cell.textLabel.text];
[cell setNeedsLayout];
});
});
}
return cell;
}
Кроме этого, метод viewDidLoad извлекает из Интернета, в результате JSon из фликра, чтобы заполнить photoNames и photoURLs. Я пытаюсь кэшировать уже загруженные изображения в локальный NSDictionary. Проблема в том, что изображения arent загружены. Даже образ местазагрузки loading.png.
Я не хочу записывать его на диск, потому что я не хочу, чтобы он был доступен при следующем запуске. Каждый раз, когда пользователь запускает приложение, он может захотеть найти другое изображение. Мне нужно сохранить его только в локальной памяти. – marciokoko
Затем просто очистите кеш-путь при вызове applicationDidEnterBackground. –