ios-coredata:内存跟踪和完全持久跟踪有啥区别?
Posted
技术标签:
【中文标题】ios-coredata:内存跟踪和完全持久跟踪有啥区别?【英文标题】:ios-coredata: what's the difference between in-memory tracking and full persistent tracking?ios-coredata:内存跟踪和完全持久跟踪有什么区别? 【发布时间】:2012-04-19 03:38:39 【问题描述】:文档太简单了,我无法完全理解
一个控制器因此有效地具有三种操作模式,取决于它是否有一个委托和缓存文件是否 名称已设置。
无跟踪:委托设置为 nil。控制器简单 提供对执行 fetch 时数据的访问。
仅内存跟踪:委托非零且文件缓存名称 设置为零。控制器监视其结果集中的对象并 更新部分和订购信息以响应相关 变化。
完全持久跟踪:委托和文件缓存名称是 非零。控制器监视其结果集中的对象并更新 部分和订购信息以响应相关变化。这 控制器维护其结果的持久缓存 计算。
这就是文档所说的,那么“持久缓存”是做什么的? “它的计算结果”是什么? 缓存只是性能问题吗?
【问题讨论】:
【参考方案1】:来自 NSFetchedResultsController 文档:
在可能的情况下,控制器使用缓存来避免重复 在设置任何部分和排序内容时执行的工作。
NSFetchResultsController 负责将数据组织成部分并排序以供 UITableView 显示,这需要对数据进行计算。每次计算后,控制器将结果缓存起来,这样如果要重新显示相同的数据,就可以返回缓存的结果,而无需再次进行计算。
所以是的,缓存旨在通过消除冗余计算来提高性能。
【讨论】:
【参考方案2】:它的计算结果是information about sections in the result set, and for the index.
,因此它会跟踪 UITableView 应该如何表示它获取的数据。而且,是的,一切都与性能有关。
【讨论】:
以上是关于ios-coredata:内存跟踪和完全持久跟踪有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud - Spring Cloud Alibaba 之 SkyWalking 分布式链路跟踪;MySQLElasticsearch持久化(十四)