1

简而言之,我正在寻找一种方法来使用以前缓存的图像作为我在 AFNetworking 的 UIImageView 类别中的占位符:

- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest 
          placeholderImage:(UIImage *)placeholderImage 
                   success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
                   failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure

示例用例

我有一个名为Post我从 API 响应中填充的模型:

@interface Post : NSObject
    @property ... NSString *smallImagePath;
    @property ... NSString *largeImagePath;
    @property ... NSString *description;       
@end

我的第一个 ViewController 将为我的所有Post对象显示一个缩略图网格(通过 smallImagePath 属性检索)。点击缩略图会将您带到 DetailViewController,其中最终将显示大图像和描述。

由于我已经下载并缓存了小缩略图,我想在等待下载大图像时将其用作占位符。在这一点上,我不知道如何进入 AFImageCache,因为它不能公开访问。

我想到的一件事是将作为参数传递的 UIImage 存储在成功块中:

// add property to Post model
@property ... UIImage *smallImage;

success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
    [self.post setSmallImage:image];
}

然后我可以在下载大图像时直接使用该图像作为占位符。

我不确定通过保留对一堆 UIImage 的引用,这是否会对我的内存占用产生任何明显/负面影响。你能想出更好的方法吗?

4

1 回答 1

0

最终实现了我最初的想法,即将图像作为属性存储在我的模型上。这样,当需要在加载较大图像时声明占位符时,我只需访问该属性。表现很棒。

于 2012-09-11T06:22:38.207 回答