简而言之,我正在寻找一种方法来使用以前缓存的图像作为我在 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 的引用,这是否会对我的内存占用产生任何明显/负面影响。你能想出更好的方法吗?