NSCache を使用して画像を保存しています。しかし、ここでの問題は、コントローラーを切り替えると、NSCache が空になることです。アプリケーションが閉じられるか、ユーザーがログアウトするまで、少なくともアイテムがそこにあるようにします。タブビューがあり、データからの画像を最初のタブに保存しているとしましょう。2 番目のタブに移動して最初のタブに戻ると、NSCache が再度初期化されます。
これが私のコードです:-
- (void)viewDidLoad {
[super viewDidLoad];
if(imageCache==nil)
{
imageCache=[[NSCache alloc]init];
NSLog(@"initialising");
}
[imageCache setEvictsObjectsWithDiscardedContent:NO];
}
(void) reloadMessages {
[Data getClassMessagesWithClassCode:_classObject.code successBlock:^(id object) {
NSMutableArray *messagesArr = [[NSMutableArray alloc] init];
for (PFObject *groupObject in object) {
PFFile *file=[groupObject objectForKey:@"attachment"];
NSString *url1=file.url;
NSLog(@"%@ is url to the image",url1);
UIImage *image = [imageCache objectForKey:url1];
if(image)
{
NSLog(@"This is cached");
}
else{
NSURL *imageURL = [NSURL URLWithString:url1];
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:imageURL]];
if(image)
{
NSLog(@"Caching ....");
[imageCache setObject:image forKey:url1];
}
}
}
コントロールが最初の if ステートメントに移動することはありません。何か不足していますか?