現在、私はウェブサイトのクライアントに取り組んでいます。TableViewにロードする必要のある画像がたくさんあります。これが私が現在行っていることです:
NSDictionary *propertyItems = [self.items objectAtIndex:indexPath.row];
cell.fio.font = [UIFont boldSystemFontOfSize:17.0f];
if([propertyItems objectForKey:@"online"] == [NSNumber numberWithInt:1])
cell.fio.textColor = [UIColor colorWithRed:0.3 green:0.6 blue:0.3 alpha:1.0];
dispatch_queue_t downloadPhotosQueue = dispatch_queue_create("downloadPhotosQeue", NULL);
dispatch_async(downloadPhotosQueue, ^{
NSData *photosData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.example.com/%@", [propertyItems objectForKey:@"photo_trumb"]]]];
dispatch_async(dispatch_get_main_queue(), ^{
cell.pic.image = [UIImage imageWithData:photosData];
});
});
cell.fio.text = [propertyItems objectForKey:@"fio"];
私はcellForRowAtIndexPath:メソッドでこれを行っています。すべてが高速に読み込まれています。しかし、問題は、テーブルを下にスクロールしているときに、もう一度上にスクロールすると、画像が何度もリロードされることです。
質問:サーバーから取得したUIImageを簡単にキャッシュする方法はありますか?したがって、一度ロードされた場合、アプリの実行中に何度もリロードされることはありません。多分私は何か間違ったことをしているのですか?
前もって感謝します!