我正在做很多 URL 请求(大约 60 个小图像),并且我已经开始异步处理它们。我的代码添加了另一个图像(很少下载东西),然后设置了一个请求。
请求完成后,我希望将“数据”放在最初为其添加的位置,但是,我看不到如何将“imageLocation”传递给块,以便将图像存储在正确的位置。
我已经用下面的第 3 行替换了它似乎可以工作,但我不是 100% 它是正确的(很难判断,因为图像几乎相同)。我还认为可以在声明块的位置传递“imageLocation”。
任何人都可以证实这一点吗?
__block int imageLocation = [allImages count] - 1;
// Add another image to MArray
[allImages addObject:[UIImage imageNamed:@"downloading.png"]];
imageLocation = [allImages count] - 1;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
[request setTimeoutInterval: 10.0];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue currentQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if (data != nil && error == nil)
{
//All Worked
[allImages replaceObjectAtIndex:imageLocation withObject:[UIImage imageWithData:data]];
}
else
{
// There was an error, alert the user
[allImages replaceObjectAtIndex:imageLocation withObject:[UIImage imageNamed:@"error.png"]];
}];