【问题标题】:Caching array data used in UITableView to save memory缓存 UITableView 中使用的数组数据以节省内存
【发布时间】:2012-09-06 14:43:52
【问题描述】:

我正在从服务器检索一个 JSON 字符串并让 RestKit 解析它并将其映射到对象并返回对象数组以显示在 UITableView 中。不幸的是,有 3 个相似数据数组分布在 3 个UITableView 中,使用UITabView 访问。

我正在将对象保存到 coredata 中,但我无法弄清楚如何限制加载到数组中内存中的对象数量,因为它们当前会在用户刷新 tableviews 的任何时候增长。我不能使用NSFetchedResultesController,因为我需要访问数据数组才能随意添加和删除对象。

有点卡住从这里去哪里,任何建议都会很棒!

【问题讨论】:

  • 这里的问题似乎是 RestKit 库在映射对象等时使用了大量内存。最终将数据(在这种情况下)保存为 JSON 文本对我来说效率更高并在需要时为 3 个不同的数据数组解析它们,并限制已保存的对象数量,并在需要时从服务器获取较旧的对象(向下滚动时)

标签: objective-c ios json core-data memory-management


【解决方案1】:

获取前 20 个重新加载的 tableview。对于下一批,数组中最后一个对象的下一个 20

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
[request setSortDescriptors:[NSArray arrayWithObject:sort]];

并使用 fetchLimit 属性

[request setFetchLimit:20];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 2012-06-17
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2017-12-13
    • 2018-09-22
    • 2010-11-05
    相关资源
    最近更新 更多