首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >executeFetchRequest的缓存结果

executeFetchRequest的缓存结果
EN

Stack Overflow用户
提问于 2012-08-18 05:08:23
回答 1查看 276关注 0票数 0

我的视图控制器中有一个方法“book”,它获取核心数据中的所有书籍,并返回它们的数组。我经常依赖self.books --当我需要知道哪本书在某个索引上,有多少本书,等等,图书方法就会重新获取结果。

我会通过在iVar中缓存这些结果来获得性能改进吗?大多数时候,我知道self.books的结果不会改变(objectAtIndex,count,等等)。我可以添加第二个布尔iVar 'booksNeedRefresh‘来充当脏标志,并且只有当我添加/删除一本书时,才能将其设置为true。然后,self.books可以检查此标志,并且只在必要时重取。

我想我的问题是:

  1. 是否每个从核心数据获取的请求都会带来不可忽略的性能影响?
  2. 缓存+一个脏标志是一个明智的解决方案吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-18 06:03:51

我觉得你走错路了。核心数据已经为您提供了大量的内存管理,因此不需要“脏”标志等。

最明显的解决方案是使用NSFetchedResultsController。它的主要目的是在表视图中显示数据,同时保持内存占用的小,但它也可以用于其他用途。您的图书数组将成为_fetchedResultsController.fetchedObjects,FRC将负责内存和获取之间的优化。

要在原则上回答你的问题,上述权衡正是问题所在,所以你对此的思考是正确的。频繁的获取确实会对性能产生影响。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12016033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档