인터넷에서 가져온 화면에 이미지를 표시하고 싶습니다. 나는 NSURLConnection을 사용하여 비동기 호출을 만들어 데이터를 가져 왔으며 응답 블록에서 코드를 호출하여 UIImage 객체에 할당했습니다.iOS : NSURLConnection sendAsynchronousRequest 이후에 sleep (1)을 사용해야하는 이유는 무엇입니까?
내 질문에 왜 블록 실행 후 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);
}
'sleep()'을 호출하지 마십시오. – zaph
어쩌면 내가 잘못된 방법으로 묻고 있었을 수도 있습니다 ... 나는 그것을 부르지 않아도된다는 것을 알고 있지만, 그렇지 않다면 나는 흰 화면을 얻었습니다. 내가 잠을 자면 문제없이 이미지가 그려집니다. – Bogdan
모든 UIKit 호출이 기본 대기열에서 수행되는지 확인하십시오. – Jiri