2012-02-06 79 views
0

以下代碼位於cellForRowAtIndexPath之內。我需要編輯以下情況的代碼;異步圖像下載

1.)如果下載圖像時出現問題,該塊應返回setFailedBlock塊,我如何將它添加到我的代碼中?

2.)當圖像下載用戶改變視圖,然後我想停止執行此代碼(停止下載)。我想我應該在viewdiddissapearviewwilldissapear方法中寫取消塊。但我不知道如何編寫代碼來取消下載。有人可以告訴我如何做到這一點?

(注:此塊是內部cellForRowAtIndexPath方法,因此必須從viewdiddissapearviewwilldissapear訪問)如果你使用NSURLConnection的

dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
//this will start the image loading in bg 
dispatch_async(concurrentQueue, ^{   
    NSData *someimageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:someimageURL]];   
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [cell.imageviewofsomeimage setImage:[UIImage imageWithData:someimageData ] ]; 
    }); 
}); 

回答

1
+0

」不是個有沒有一個解決方案來實現它與塊自我。如在設置一個'setFailedBlock'? – Illep 2012-02-06 16:16:01

+0

@Illep:塊不是神奇的子彈。適當時使用它們。乍一看,這看起來並不像一個合適的地方,因爲塊友好的方法不能被取消。 – JeremyP 2012-02-06 16:35:27

+0

@JeremyP好的,那麼做這件事的正確方法是什麼?適合的解決方法 – Illep 2012-02-06 16:39:11