我是移动开发的新手。在我的应用程序中,我有一个表格,显示用户创建的食谱。单元格被设计为具有图像(异步加载)和2个标签的nib文件。在模拟器上一切似乎都可以。但即使在实现异步加载图像之后,滚动表格在真实设备上看起来也很糟糕。 使用时间分析器时,大部分时间都被主函数占用。所以我在想是否这可能是由于使用核心数据造成的。我不确定这个。 如果有人能帮我解决这个问题,我将不胜感激。
这实际上是我用数据填充我的单元格的方式:
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"TableCell";
SimpleTableViewCell *cell = (SimpleTableViewCell *)[self.tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
Receipe *cellRecipe = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.recipeName.text = cellRecipe.name;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:cellRecipe.image];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
UIImage *image = [UIImage imageWithContentsOfFile:path];
dispatch_async(dispatch_get_main_queue(), ^{
[cell.recipeImage setImage:image];
});
});
cell.recipeDetails.text = cellRecipe.ingredients;
UIImage *favourite;
if ([cellRecipe.isFavourite boolValue] == YES) {
favourite = [UIImage imageNamed:@"liked.png"];
}
[cell.recipeIsFavouriteButton setImage:favourite forState:UIControlStateNormal];
favourite = nil;
return cell;
}
答案 0 :(得分:1)
使用
[tableView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
而不是
[tableView dequeueReusableCellWithIdentifier:identifier];
我认为不需要异步加载,使用正常加载。