【问题标题】:_fetchedResultsController objectAtIndexPath:indexPath freezes app_fetchedResultsController objectAtIndexPath:indexPath 冻结应用程序
【发布时间】:2015-07-29 21:11:47
【问题描述】:

[_fetchedResultsController objectAtIndexPath:indexPath] 太费时间了,有什么替代方法吗? heightForRowAtIndexPath 在这一点上花费了太多时间。我不知道这是否是错误的问题,但请帮助我获得正确的解决方案。

   - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath   *)indexPath
 {
    ThreadInfo *info=[_fetchedResultsController objectAtIndexPath:indexPath];
    NSString* objectId = info.threadID;
    if (![self.idToCellHeight objectForKey: objectId])
    {
        CGFloat height = [self calculateHeightForId:info];
        [self.idToCellHeight setObject:[NSNumber numberWithFloat:height] forKey: objectId];
    }
    return [[self.idToCellHeight objectForKey:objectId] floatValue];

}

【问题讨论】:

  • 我真的被困在了这一点上。

标签: ios core-data nsfetchedresultscontroller


【解决方案1】:

另一种方法是使用自定大小的单元格。您不必计算(或缓存)任何行高。

  1. 向 tableViewCell 的子视图添加自动布局约束,这将导致单元格根据子视图的内容调整其高度。
  2. 启用行高估计。

    self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 44.0;

有关更多信息,请参阅smileyborg 在其answer 中的详细演练,以在 UITableView 中使用自动布局实现动态单元格布局和可变行高

【讨论】:

    【解决方案2】:

    您是否运行过 Instruments?运行时间探查器。什么在占用时间?找到它并消除它。

    如果找不到,请在此处发布跟踪以供其他人查看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-04
      • 2015-05-09
      • 2013-09-26
      • 2014-09-29
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多