gpt4 book ai didi

ios - 缓存 executeFetchRequest 的结果

转载 作者:行者123 更新时间:2023-11-28 22:50:59 24 4
gpt4 key购买 nike

我的 View Controller 中有一个“书籍”方法,它获取核心数据中的所有书籍并返回它们的数组。我经常依赖 self.books - 当我需要知道它在某个索引处是哪本书、有多少本书等时,books 方法会重新获取结果。

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

我想我的问题是:

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

最佳答案

我认为你走错了路。 Core Data 已经为您提供了很多内存管理,因此不需要“脏”标志等。

最明显的解决方案是使用 NSFetchedResultsController。它的主要目的是在 TableView 中显示数据,同时保持较小的内存占用——但它也可以用于其他目的。您的书籍数组将变为 _fetchedResultsController.fetchedObjects,并且 FRC 将负责内存和提取之间的优化。

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

关于ios - 缓存 executeFetchRequest 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12016033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com