我在我的应用中使用了来自UIImageView+AFNetworking.h
的以下类别AFNetworking
,工作正常,为我提供缓存照片并顺利加载图片。
有一次,我想获得一张已存在于缓存中的图像。
所以我深入到上面的类别类别,我发现下面的代码,我认为 - 可能会有所帮助。
以下是它的摘录:
@implementation AFImageCache
- (UIImage *)cachedImageForRequest:(NSURLRequest *)request {
switch ([request cachePolicy]) {
case NSURLRequestReloadIgnoringCacheData:
case NSURLRequestReloadIgnoringLocalAndRemoteCacheData:
return nil;
default:
break;
}
return [self objectForKey:AFImageCacheKeyFromURLRequest(request)];
}
- (void)cacheImage:(UIImage *)image
forRequest:(NSURLRequest *)request
{
if (image && request) {
[self setObject:image forKey:AFImageCacheKeyFromURLRequest(request)];
}
}
@end
如果您希望我添加此版本的网络版,则已经here。
我认为,- (UIImage *)cachedImageForRequest:(NSURLRequest *)request
是可以返回我缓存图像的方法。
但我不确定,我该如何使用它?
如果我稍微了解一下Objective-C,它就是一个"协议"?
到目前为止,我所尝试的是在我的一个视图控制器中使用它作为协议。像这样:
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController<AFImageCache>
@end
但是它给了我以下警告:
我不确定如何解决这些警告并从缓存中获取图像?还是其他更合适的方式?
答案 0 :(得分:1)
我假设您导入了UIImageView + AFNetworking.h标头。
如果要访问缓存的图像。你应该有一个NSURLRequest对象。然后是这样的:
UIImage *image = [[UIImageView sharedImageCache] cachedImageForRequest:request];
完成!