У меня проблемы с:
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0UL);
concurrentQueue
- это nil
на iOS 4.2.1 (устройство), но тот же код отлично работает на другом устройстве с iOS 5.0.1.
Когда я проверял заголовок, он говорит, что он доступен с iOS 4.0, я что-то не так делаю?
Приведенный ниже код извлекает изображения из Интернета и прекрасно работает во всем после 4.2.1, но не в 4.2.1, есть идеи, почему? Можете ли вы создать параллельную очередь другим способом, используя GCD?
- (void)imageFromURL:(NSString*)link {
if ([link length] == 0)
return;
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0UL);
if (concurrentQueue == nil)
return;
dispatch_async(concurrentQueue, ^{
__block UIImage* image = nil;
dispatch_sync(concurrentQueue, ^{
NSError *error = nil;
NSURL *url = [[NSURL alloc] initWithString:link];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSData *imageData = [NSURLConnection sendSynchronousRequest:request
returningResponse:nil
error:&error];
if ( error == nil && imageData != nil) {
image = [UIImage imageWithData:imageData];
} else {
DLog(@"%@", [error description]);
}
if ([self.delegate respondsToSelector:@selector(setImage:)]) {
dispatch_sync(dispatch_get_main_queue(), ^{
[self.delegate setImage:image];
});
}
});
});
}