我想在屏幕上显示我从互联网上获取的图像。我已经使用 NSURLConnection 创建了一个异步调用来获取数据,并且在响应块中,我调用了代码以将其分配给 UIImage 对象。
我的问题是为什么我需要在块执行后调用 sleep(1) ?如果我不调用它,那么我的图像不会绘制在屏幕上。这是实现这一目标的另一种更优雅的方式吗?
-(void)loadImage:(NSString *)url
{
NSURL *imageURL = [NSURL URLWithString:url];
NSOperationQueue *queue = [[NSOperationQueue alloc]init];
NSURLRequest *imageRequest = [NSURLRequest requestWithURL:imageURL cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5.0f];
[NSURLConnection sendAsynchronousRequest:imageRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if(!connectionError) {
if(data) {
//there goes the main thingy
self.myView.wallpaperImage = [UIImage imageWithData:data];
[self.myView setNeedsDisplay];
} else {
NSLog(@"No data found at url:%@",url);
}
} else {
NSLog(@"Could not connect to %@",url);
}
}];
sleep(1);
}