问题现象
CoreData + CloudKit 支持的 App 在新建托管对象并同步导出到云时可能会导致进程内存疯狂增长,最终很快被系统杀死。
如果你的 App 满足以下三点,那么很可能出现这种情况:
- CoreData + CloudKit 支持
- 云存储中已存入大量数据(1.5GB+)
- CoreData 数据结构包含若干一对多(one to many)或多对多(many to many)关系
如上图所示,在新建一个托管对象(只占用不到3MB空间)后,会发生内存暴涨的情况,如果在真机上运行,App 很快会被系统终止。
在本篇博文中,我们将详细讨论引起该内存暴涨现象的细微末节,并给出完美的解决方案。
注意,该问题已有多人向 Apple 提交过 bug 反馈,在 Apple 开发者论坛和 Stack Overflow 上也有多人提问,但都没有满意的解决方法。
请系好安全带,我们将踏上神奇的数据探究之旅。
Let‘s go!!!😉