【问题标题】:iOS PFBatchFaultingArray - causing bad UITableView performance(?)iOS PFBatchFaultingArray - 导致 UITableView 性能不佳(?)
【发布时间】:2013-05-09 20:41:21
【问题描述】:

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

好像是从下面的方法调用的:

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

不知道有没有办法解决这个问题?或者它可能是导致性能打嗝的其他原因?

【问题讨论】:

    标签: ios objective-c cocoa-touch core-data nsfetchedresultscontroller


    【解决方案1】:

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

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

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

    【讨论】:

    • 最后一段写得很好,答案也是如此:)
    • 谢谢,很好的答案。我没有指定fetchBatchSize,Core Data 有默认获取大小吗?将其设置为 0 对性能没有太大帮助,但现在我至少知道 PFBatchFaultingArray 是什么了。会看视频。谢谢!
    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多