загрузка нескольких изображений из Интернета с помощью NSOperationQueue в асинхронном режиме - PullRequest
1 голос
/ 11 января 2012

У меня есть массив или URL, которые указывают на изображения, присутствующие на сервере.Теперь я хочу отобразить изображения в виде прокрутки с 4 изображениями в каждой строке.Я думаю об использовании NSOperationQueue и NSInvocationOperation для асинхронной загрузки изображений.В качестве ссылки я использую следующий URL:
http://www.switchonthecode.com/tutorials/loading-images-asynchronously-on-iphone-using-nsinvocationoperation

Но я не уверен, как мне загрузить несколько изображений.Нужно ли запускать цикл for с несколькими объектами NSInvocationOperation и добавлять его в объект NSOperationQueue?

Я ищу какие-либо указания для достижения своей задачи.

РЕДАКТИРОВАТЬ: Я сделал следующее, но NSOperationQueue не может вызвать объекты NSInvocationOperation

NSOperationQueue *queue = [NSOperationQueue new];
for(int i = 0;i<rowcount;i++){
    for(int j =0; j<4;j++){
        UIButton *btnAlbum = [[UIButton alloc] initWithFrame:CGRectMake(x, y, 72, 72)];
        [btnAlbum setBackgroundImage:[UIImage imageNamed:@"placeHolder.png"] forState:UIControlStateNormal];
        btnAlbum.tag = count+100;
        //[btnAlbum addTarget:self action:@selector(viewAlbum:) forControlEvents:UIControlEventTouchUpInside];
        [scrlvw addSubview:btnAlbum];
        //[btnAlbum release];
        x = x + 80;
        count++;

        NSInvocationOperation *operation = [[NSInvocationOperation alloc] 
                                            initWithTarget:self
                                            selector:@selector(loadImage) 
                                            object:nil];

        [queue addOperation:operation]; 
        [operation release];
    }
    x = 0;
    y = y +80;
}

Спасибо
Pankaj

Ответы [ 3 ]

1 голос
/ 16 января 2012

ASIHTTPRequest пришел, чтобы спасти меня, и я смог легко выполнить свою задачу.

1 голос
/ 11 января 2012

да - для каждого изображения, которое вы хотите загрузить, вы создаете NSInvocationOperation, которое при выполнении будет вызывать подпрограмму, которая загружает изображение. NSInvocationOperation добавляется в очередь, которая отвечает за выполнение NSInvocationOperation в своем собственном потоке.

Вам нужна только одна очередь, но вам нужна новая операция NSInvocationOperation для каждой загрузки.

0 голосов
/ 11 января 2012

Почему бы не использовать блоки и Grand Central Dispatch для загрузки этих изображений? Проверьте этот пост и посмотрите, будет ли это работать для вас.

...