我有一个从服务器下载图像的应用程序。这些图像大约有 56 KB,并且至少有 30 张。有时用户没有连接或边缘连接(拨号)。
我在我的 AppDelegate.h 中使用 NSURLCache 是这样的:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
int cacheSizeMemory = 4*1024*1024; // 4MB
int cacheSizeDisk = 32*1024*1024; // 32MB
NSURLCache *sharedCache = [[[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"] autorelease];
[NSURLCache setSharedURLCache:sharedCache];
但出于某种原因,它不会缓存图像。如果我加载所有可用互联网连接的图像,然后断开连接或使用边缘网络,它会再次获取图像。
最佳答案
编辑:如果您使用 NSURLRequest 的 NSURLRequestReturnCacheDataElseLoad cachePolicy 或返回适当的 Cache-Control header ,iOS 5 及更高版本支持磁盘缓存。
有关缓存的问题在 AFNetworking F.A.Q. 中有解释。 .
综上所述,似乎在 iOS 上,NSURLCache
不提供磁盘缓存功能,即使您创建 NSURLCache
用diskCapacity>0
(它似乎被忽略了),解决方案是使用 NSURLCache
的一些其他实现。喜欢 SDURLCache
在常见问题解答中建议。
关于ios - 使用 AFNetworking API 的 NSURLCache 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069257/