3

该文件对我来说有点太简单了,无法完全理解

因此,控制器有效地具有三种操作模式,由它是否具有委托以及是否设置了缓存文件名来确定。

无跟踪:委托设置为零。控制器只是提供对数据的访问,就像执行获取时一样。

仅内存跟踪:委托为非 nil,文件缓存名称设置为 nil。控制器监视其结果集中的对象并更新部分和排序信息以响应相关更改。

完全持久跟踪:委托和文件缓存名称非零。控制器监视其结果集中的对象并更新部分和排序信息以响应相关更改。控制器维护其计算结果的持久缓存。

这就是文件所说的,那么“持久缓存”是做什么的?“它的计算结果”是什么?缓存只是性能问题吗?

4

2 回答 2

0

从 NSFetchedResultsController 文档中:

在可能的情况下,控制器使用缓存来避免在设置任何部分和对内容进行排序时重复执行的工作。

NSFetchResultsController 负责将数据组织成部分并排序以供 UITableView 显示,这需要对数据进行计算。每次计算后,控制器都会将结果缓存起来,这样如果要重新显示相同的数据,就可以返回缓存的结果,而无需再次进行计算。

所以是的,缓存旨在通过消除冗余计算来提高性能。

于 2012-04-19T04:05:27.807 回答
0

它的计算结果是information about sections in the result set, and for the index.它跟踪 UITableView 应该如何表示它获取的数据。而且,是的,一切都与性能有关。

于 2012-04-19T04:06:22.857 回答