2013-07-24 2 views
1

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

dispatch_async(dispatch_queue_create("bgQ", 0), ^{ 
    // download image 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     // display iamge 
    }); 
}); 

Но я понял, что этот путь я не отпуская очередь отправки. Итак, вопрос в том, нам нужно объявить очередь отдельно, чтобы мы могли ее освободить позже или мы можем как-то отпустить очередь в первом примере?

мы должны это сделать, как это ?:

dispatch_queue_t bgQ = dispatch_queue_create("bgQ", 0); 

dispatch_async(bgQ, ^{ 
    // download image 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     // display iamge 
    }); 
}); 

dispatch_release(bgQ); 

ответ

1

вы можете попробовать делать это

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    // download image 
    dispatch_async(dispatch_get_main_queue(), ^{ 
    //display image 
    } 
    } 

или для загрузки изображения попробовать этот AsyncImageView

+0

Я помню, что читал где-то, что мы не должны user dispatch_get_global_queue, по какой-то причине –

+0

, тогда я обновил ответ, вы можете использовать эту альтернативу –

+0

Спасибо за ссылку, но я уже узнайте о реализациях async imageview, мой вопрос направлен только на принцип использования dispatcH_async и обработки dispatch_queues. –