我正在構建一個iOS應用程序,它將XML項目添加到TableView(當然還有其他東西)。如果文章的縮略圖字段爲空,我想在TableView單元格或默認佔位符中顯示文章的縮略圖。從遠程URL添加圖像後,TableView滾動口吃
下面的代碼添加了文章中的縮略圖,但之後導致滾動的結果相當多。如果我只爲每個單元格使用佔位符圖像,一切都很好。我猜測我可能沒有使用最理想的方法來添加縮略圖,不知道是否會導致問題。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"idCellNewsTitle"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"idCellNewsTitle"];
}
NSDictionary *dict = [self.arrNewsData objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"holder-small.jpg"];
cell.textLabel.text = [dict objectForKey:@"title"];
cell.detailTextLabel.text = [dict objectForKey:@"pubDate"];
if ([dict objectForKey:@"thumbnail"] != nil) {
NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString: [dict objectForKey:@"thumbnail"]]];
if (imgData) {
UIImage *image = [UIImage imageWithData:imgData];
if (image) {
cell.imageView.image = image;
}
}
}
return cell;
}
編碼在最新的XCode,測試在模擬器和一個新的iPod - 結果是既相同。在應用程序運行期間沒有任何警告或錯誤,滾動時CPU的峯值爲1%,內存保持在16 MB左右。
更新 - 視頻 這裏是一個視頻展示了這個問題的任何未來的菜鳥與比較 - 第一個例子是一個佔位符,第二個是沒有。 Video on YouTube
擷取圖片不這樣做 「dataWithContentsOfURL」 在主線程上,使用一個後臺線程完成這個任務 – Pawan
我剛學的iOS編程 - 你可以在此上闡述一下或者用一些示例代碼發佈答案?我真的很感激它。感謝您的反饋:) – NightMICU
您還應該緩存圖像,以便在每次UITableViewCell變爲可見時不會下載相同的圖像。 – Jonathan