基本上,我有一个 url 数组作为字符串,当我遍历这个数组时,如果元素是图像的 url,我想将该 url 转换为 UIImage 对象并将其添加到另一个数组中。这很慢,因为我必须为每个 URL 请求数据。我已经尝试使用如下所示的 dispatch_async ,但它似乎根本没有任何区别。
关键是当我将这些对象添加到我的另一个数组时,无论它们是图像还是其他东西,它们都必须保持有序。任何人都可以提供任何指导吗?
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
for (int i=0; i<[slides count]; i++){
        __block NSString *mediaURLString = [primaryPhoto objectForKey:@"url"];
        if ([self mediaIsVideo:mediaURLString]){
              ***some code***
        }
        else{ //if media is an image
            dispatch_group_async(group, queue, ^{
                mediaURLString = [mediaURLString stringByAppendingString:@"?w=1285&h=750&q=150"];
                NSURL *url = [NSURL URLWithString:mediaURLString];
                [mutableMedia addObject:url];
                NSURL *url = ((NSURL *)self.mediaItem);
                NSURLRequest *request = [NSURLRequest requestWithURL:url];
                NSURLResponse *response;
                NSError *error;
                NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
                UIImage *image = [[UIImage alloc] initWithData:urlData];
                [mutableMedia replaceObjectAtIndex:i withObject:image];
            });
        }
    }
    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);