我的视图控制器中有一个方法“book”,它获取核心数据中的所有书籍,并返回它们的数组。我经常依赖self.books --当我需要知道哪本书在某个索引上,有多少本书,等等,图书方法就会重新获取结果。
我会通过在iVar中缓存这些结果来获得性能改进吗?大多数时候,我知道self.books的结果不会改变(objectAtIndex,count,等等)。我可以添加第二个布尔iVar 'booksNeedRefresh‘来充当脏标志,并且只有当我添加/删除一本书时,才能将其设置为true。然后,self.books可以检查此标志,并且只在必要时重取。
我想我的问题是:
发布于 2012-08-18 06:03:51
我觉得你走错路了。核心数据已经为您提供了大量的内存管理,因此不需要“脏”标志等。
最明显的解决方案是使用NSFetchedResultsController。它的主要目的是在表视图中显示数据,同时保持内存占用的小,但它也可以用于其他用途。您的图书数组将成为_fetchedResultsController.fetchedObjects,FRC将负责内存和获取之间的优化。
要在原则上回答你的问题,上述权衡正是问题所在,所以你对此的思考是正确的。频繁的获取确实会对性能产生影响。
https://stackoverflow.com/questions/12016033
复制相似问题