CoreData + CloudKit 支持的 App 在导出(export)新建托管对象时内存飙升导致被杀死的解决
Posted 大熊猫侯佩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CoreData + CloudKit 支持的 App 在导出(export)新建托管对象时内存飙升导致被杀死的解决相关的知识,希望对你有一定的参考价值。
问题现象
CoreData + CloudKit 支持的 App 在新建托管对象并同步导出到云时可能会导致进程内存疯狂增长,最终很快被系统杀死。
如果你的 App 满足以下三点,那么很可能出现这种情况:
- CoreData + CloudKit 支持
- 云存储中已存入大量数据(1.5GB+)
- CoreData 数据结构包含若干一对多(one to many)或多对多(many to many)关系
如上图所示,在新建一个托管对象后,会发生内存暴涨的情况,如果在真机上运行,App 很快会被系统终止。
在本篇博文中,我们将详细讨论引起该内存暴涨现象的细微末节,并给出完美的解决方案。
注意,该问题已有多人向 Apple 提交过 bug 反馈,在 Apple 开发者论坛和 Stack Overflow 上也有多人提问,但都没有满意的解决方法。
请系好安全带,我们将踏上神奇的数据探究之旅。
Let‘s go!!!
以上是关于CoreData + CloudKit 支持的 App 在导出(export)新建托管对象时内存飙升导致被杀死的解决的主要内容,如果未能解决你的问题,请参考以下文章
App 如何根据需要动态为 CoreData 开启 CloudKit 云同步功能
iOS swift:使用 coredata (cloudkit) 存储缓存
如何更灵活的处理 CloudKit 从云端同步到本地的 CoreData 托管对象
如何更灵活的处理 CloudKit 从云端同步到本地的 CoreData 托管对象