ios - 如何获取 AFNetworking 的 UIImageView 类别存储的缓存图像?

标签 ios objective-c caching uiimageview afnetworking-2

我在我的应用程序中使用来自 AFNetworking 的以下类别 UIImageView+AFNetworking.h,它工作正常,它为我缓存照片并顺利加载图像。

有一次,我想获取缓存中已有的图像。

所以我深入研究了上面的类别类,在那里我发现了以下代码,我认为这可能会有所帮助。

这是它的片段:

@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,它是一种“协议(protocol)”吗?

到目前为止,我所尝试的是在我的一个 View Controller 中像协议(protocol)一样使用它。像这样:

#import <UIKit/UIKit.h>

@interface MyViewController : UIViewController<AFImageCache>

@end

但是它给了我以下警告:

enter image description here

我不确定如何解决这些警告并从缓存中获取图像?或者其他更合适的方式?

最佳答案

我假设您导入了 UIImageView+AFNetworking.h header 。

如果你想访问缓存的图片。你应该有一个 NSURLRequest 对象。然后是这样的:

UIImage *image = [[UIImageView sharedImageCache] cachedImageForRequest:request];

完成!

关于ios - 如何获取 AFNetworking 的 UIImageView 类别存储的缓存图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33583334/

相关文章:

objective-c - Beyond NARC : When to retain, 什么时候赋值,什么时候复制

iphone - 图片为空[NSCFDictionary setObject:forKey:]:尝试插入nil值(键:)

ios - NSMutableArray 项完全相同

iphone - AppDelegate、RootViewController 和 UIApplication 之间是什么关系?

iphone - 如何从其他 View 访问缓存

caching - 使用 Nginx 强制缓存文件

Magento 1.13 FPC 缓存未失效

ios - 如何扩展默认实现(使用扩展)在属性上添加 didSet?

iphone - NSMutableArray 到 NSDictionary iOS 3.1.3 问题

objective-c - 无法在 View 层中捕获蒙版