0

我在我的一个应用程序中使用带有 NSFetchResultController 的 Core Data。我正在寻找提高性能的方法,我遇到的一个问题是我的 UITableViewController。这有点粗略。我使用过 Instruments Time Profiler,发现以下内容:

在此处输入图像描述

它似乎是从以下方法调用的:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    [...]
    Post *cellPost = [self.fetchedResultsController objectAtIndexPath:indexPath];
    [...]
}

我想知道有没有办法解决这个问题?或者它可能是导致性能打嗝的其他东西?

4

1 回答 1

2

PFBatchFaultingArray 是您从执行配置为[fetchRequest setFetchBatchSize:20];(或任何大于 0 的数字)的 fetch 返回的数组。它就像一个常规数组,但如果需要,它的-objectAtIndex:方法实际上会fetchBatchSize从磁盘中获取一组对象。这可能会很慢,但它确实可以降低内存使用率,因为fetchBatchSize实际上只有很多对象需要在内存中,而不是[array count]很多。

您可以尝试将您的获取请求配置为批量大小为 0,以禁用此功能。只要确保您可以将所有需要的对象放入内存中即可。

不过,优化您的应用的核心数据性能可能不仅仅涉及这一更改!在Core Data Best Practices (2012 WWDC session)中有一个很好的技术概述 。

于 2013-05-09T21:17:01.653 回答