私はSOとWebを見回しましたが、具体的な答えは見つかりませんでした。
簡単に言うと、Flickrから画像情報を読み込んでいるテーブルがあります。各セルの左側に画像のサムネイルを表示したい。
メイン(UI)スレッドをブロックせずにこれを行うために、私はブロックを使用しています:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"top50places";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//getting the selected row image
NSDictionary* currentImageDictionary=[self.topfifty objectAtIndex:indexPath.row];//topFifty is an array of image dictionaries
//creating the download queue
dispatch_queue_t downloadQueue=dispatch_queue_create("thumbnailImage", NULL);
dispatch_async(downloadQueue, ^{
UIImage *downloadedThumbImage=[self getImage:currentImageDictionary] ;
//Need to go back to the main thread since this is UI related
dispatch_async(dispatch_get_main_queue(), ^{
cell.imageView.image = downloadedThumbImage ;
});
});
dispatch_release(downloadQueue);
return cell;
}
今、これは機能しません。ブロックを実行する前にセルを返す可能性が高いためです。しかし同時に、ブロックがreturn引数を受け入れないため、メインキューブロック内のセルを返すことができません。
UITableViewCellサブクラスの作成を避けたい。
ブロックを使用した簡単な答えはありますか?
ありがとうKMB