我使用+ UIImage setImageWithURL:
方法遇到了一些麻烦。我想要做的是首先发送缩略图图像的异步请求。这个图像很小,所以应该很快加载。我还想发送另一个异步请求来下载图像的高分辨率版本,因为加载需要更长的时间。
我认为它会是这样的:
NSURL *thumbURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.server.com/uploads/thumbs/%@.png", name]];
[imageView setImageWithURL:thumbURL placeholderImage:[UIImage imageNamed:@"PHImage.png"]];
NSURL *hiRezURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.server.com/uploads/%@.png", name]];
[imageView setImageWithURL:hiRezURL];
但这只会加载高分辨率图像并且耗时太长。有什么建议吗?
答案 0 :(得分:1)
如果您查看UIImageView+AFNetworking.m
的实现,您会看到它声明了一个属性:
@property (readwrite, nonatomic, retain, setter = af_setImageRequestOperation:) AFImageRequestOperation *af_imageRequestOperation;
并且- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage
方法做的第一件事(实际上它首先调用-setImageWithURLRequest:placeholderImage:success:failure:
)是[self cancelImageRequestOperation];
,它实际上取消了类属性af_imageRequestOperation
的操作。
这意味着,当您再次调用该方法(在第3行)时,它会取消第1行的操作。
更好的方法是使用+ imageRequestOperationWithRequest:imageProcessingBlock:success:failure:
并在成功块中设置图像视图的图像。我想如果你使用这种方法,你之后也需要调用[operation start];
。
希望它有所帮助。