iPhoneでRSSをテストしています。0nibファイルを使用します。私はできる限りそれを説明しようとし、必要に応じてコードを投稿しますが、私はその一般的な現象を一般的な解決策で賭けます。問題はtableviewcontrollerにあり、ソリューションはおそらくCellForRowAtIndexPathメソッドで実装する必要があります。下にスクロールすると、非同期キューがそのセルの正しい画像を読み込むまで、プレビュー画像はそれぞれの場所にとどまります。したがって、配列アイテム1の画像があり、配列アイテム20までスクロールダウンした場合、キューがその画像に追いついてロードするまで、配列アイテム1の画像はそのまま残ります。表示していないセルから画像を解放するにはどうすればよいですか?お時間をいただきありがとうございます。
これが私のCellForRowです...
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier];
}
ArticleItem *object = _objects[indexPath.row];
cell.primaryLabel.text = object.title;
cell.secondaryLabel.text = object.strippedDescription;
cell.primaryLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.primaryLabel.numberOfLines = 0;
cell.primaryLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.secondaryLabel.numberOfLines = 0;
//Async dispatch queue for image preview loading...
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
UIImage *preview = nil;
if (object.iG = nil)
{
preview = [UIImage imageNamed:@"CellLogo.png"];
}
else
{
preview = [UIImage imageWithData:object.iG];
}
dispatch_sync(dispatch_get_main_queue(), ^{
[[cell myImageView] setImage:preview];
[cell setNeedsLayout];
});
});
return cell;
}
収集すると、画像のURLを取得してデータに変換するArticleItemクラスがあり、その名前を実行するCustomCellクラスがあります。CustomCell.h @interface CustomCell:UITableViewCell {UIImageView * myImageView; } @property(nonatomic、strong)UIImageView * myImageView; @end ================================================ ===== CustomCell.m
- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
// Initialization code
myImageView = [[UIImageView alloc]init];
[self.contentView addSubview:myImageView];
}
return self;
}
-(void)viewDidUnload {
myImageView = nil;
primaryLabel = nil;
secondaryLabel = nil;
}