1>メインスレッドで最初にテーブルビューを埋めてから、メインスレッドから埋められた背景に画像を埋める必要がありますか、それとも上記の手順に対する他の解決策はありますか?
すべての UI 変更は、メイン スレッドで行う必要があります。ただし、画像のダウンロード (および角を丸くしたい場合などの処理) は、バックグラウンド スレッドで実行する必要があります。
2>画像の読み込みに時間がかかり、誰かがテーブルビューからメッセージをすでに削除している場合、メッセージがある場所に正確に読み込むにはどうすればよいですか。バックグラウンドでの読み込みは省略され、続行されます。または、メッセージと画像の両方が読み込まれるまで、スレッド全体をメインスレッドに保持する必要がありますか?
テーブル ビューには、データ ソースの内容が反映されます。表のセル以外は何も追跡しません。ユーザーがメッセージを削除し、画像がまだダウンロードされていない場合は、その画像のダウンロードをキャンセルする必要があります。
画像のダウンロードについては、 SDWebImageライブラリをチェックしてみてください。次のように使用できる「setImageWithURL」メソッドを有効にします。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:MyIdentifier] autorelease];
}
// Here we use the new provided setImageWithURL: method to load the web image
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
cell.textLabel.text = @"My Text";
return cell;
}