Iam di problemi con:Coda concomitante con GCD? (IOS 4.2.1)
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0UL);
concurrentQueue
è nil
su iOS 4.2.1 (periferica), ma lo stesso codice funziona perfettamente su un altro dispositivo che esegue IOS 5.0.1.
Quando ho controllato l'intestazione dice che è disponibile da iOS 4.0, sto facendo qualcosa di sbagliato?
Il codice qui sotto recupera le immagini da Internet e funziona alla grande in tutto dopo 4.2.1 ma non in 4.2.1, qualche idea perché? Puoi creare una coda concorrente in un altro modo usando 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];
});
}
});
});
}
Grazie signore, ho accettato volentieri la tua risposta! – Konrad77
Sarebbe utile sostituire automaticamente DISPATCH_QUEUE_PRIORITY_BACKGROUND a DISPATCH_QUEUE_PRIORITY_LOW quando DISPATCH_QUEUE_PRIORITY_BACKGROUND non è disponibile. – slatvick
quindi qual è la procedura migliore prima di iOS 5 per inviare qualcosa a un thread in background? – Tomen