Параллельная очередь с GCD? (iOS 4.2.1)

У меня проблемы с:

dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0UL);

concurrentQueue is 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];
                });
            }           
        });
    }); 
}
9
задан Brad Larson 20 December 2011 в 19:20
поделиться