0

我在使用 +UIImagesetImageWithURL:方法时遇到了一些麻烦。我想做的是首先发送一个缩略图的异步请求。此图像非常小,因此加载速度应该相当快。我还想发送另一个异步请求来下载图像的高分辨率版本,因为它需要更长的时间来加载。

我认为它会是这样的:

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];

但这只会加载高分辨率图像并且需要很长时间。有什么建议么?

4

1 回答 1

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];事后打电话。

希望能帮助到你。

于 2012-07-23T19:16:23.993 回答