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持久化(十四)

跟踪每个函数的内存分配

在 cpp 中重新定义 new 和 delete 运算符以跟踪内存分配:无法跟踪整个内存块的删除大小

运动跟踪与 Blob 跟踪