0

在我的代码中,我正在下载应用程序生命周期开始时的所有图像:

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];

     NSURL *url = [NSURL URLWithString:[item imagePath]];
     __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
     [request setCompletionBlock:^{
     //NSData *responseData = [request responseData];
     //[iw setImage: [UIImage imageWithData:responseData] forState:UIControlStateNormal];   
}];

[request setFailedBlock:^{
     // NSError *error = [request error];
     //[iw setImage:nil forState:UIControlStateNormal];         
}];

[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
     [request startSynchronous];
}];                

所有图像名称都是唯一的。而且它们不会经常变化。我需要的是,在应用程序完成后也将图像保留在缓存中。当我再次打开应用程序时,它会从下载的缓存中读取它。
可能吗?

4

1 回答 1

0

这确实是可能的。您的缓存存储策略已经正确。

您还需要指定适当的缓存策略,请参阅http://allseeing-i.com/ASIHTTPRequest/How-to-use#about_cache_policies

这里重要的是要注意数据的到期日期。在默认模式下,ASIHTTPRequest 会关心过期日期,如果数据过期,将重新加载数据。根据我的经验,服务器通常没有指定适当的到期日期,因此请考虑使用ASIOnlyLoadIfNotCachedCachePolicy.

如果您愿意,您也可以自己指定到期日期(这对您来说可能更有趣,因为您的图像有时会发生变化)。按照我的链接,您需要的所有信息都在那里(请参阅“其他与缓存相关的功能”)。

哦,还有一件事:ASIHTTPRequest 不再是最新的了。开发商已放弃该项目。因此 ASIHTTPRequest 不支持 ARC 等。如果可以,请切换到另一个框架,如 AFNetworking 或 RestKit。

于 2012-04-09T11:12:46.590 回答