简而言之,我正在寻找一种方法在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的引用来对我的内存占用产生任何明显/负面的影响。你能想到一个更好的方法吗?
答案 0 :(得分:0)
结束了我最初的想法,即将图像存储为我的模型上的属性。这样,当需要在较大的图像加载时声明占位符时,我只是访问该属性。表现一直很好。