我的视图控制器中有一个方法'books',它获取核心数据中的所有书籍并返回它们的数组。我经常依赖 self.books - 当我需要知道它在某个索引处是哪本书、有多少本书等时,books 方法会重新获取结果。
我会通过将这些结果缓存在 iVar 中来获得任何性能改进吗?绝大多数时候我都知道 self.books 的结果不会改变(objectAtIndex、count 等)。我可以添加第二个布尔 iVar 'booksNeedRefresh' 来充当脏标志,并且仅当我添加/删除一本书时才将其设置为 true。然后 self.books 可以检查此标志并仅在必要时重新获取。
我想我的问题是:
- 来自核心数据的每个获取请求是否都会带来不可忽略的性能影响?
- 缓存 + 脏标志是一个明智的解决方案吗?