CloudKit与核心数据和内存分配

时间:2016-10-07 02:21:42

标签: swift core-data memory-management cloudkit

感谢您查看我的问题。我正在使用同时使用Core DataCloudKit的应用,当用户创建对象时,我将各种字符串,浮点数和图像资源保存到Core Data中以便快速进行本地存储,而且CloudKit作为备份选项。为了防止数据本地损坏,或者用户切换设备,我希望他们始终能够访问我的应用程序使用的数据。无论如何,当我将应用程序编程为直接从CloudKit加载,绕过Core Data存储时,我注意到它最终使用的内存几乎是本地存储时的两倍,而且没有任何内容这需要从云更新。我总是注意到当我执行像CloudKitCKFetchRecordsOperation这样的CKQuery进程时发生的内存使用量激增,但我想通常一旦进程完成内存会解除分配,但事实并非如此。基本上它是存储的完全相同的数据,无论它是从CloudKit还是Core Data拉出来的,所以我不明白为什么一个人分配的内存比另一个多得多。是否有可能我做错了什么,并坚持使用强引用,或者这是否是使用CloudKit时普遍接受的劣势?

更简单的示例是:用户启动应用,并且没有通过Core Data在本地找到的任何数据触发CloudKit请求存储在云中的数据。一旦检索并正确处理了所有数据,我的应用程序会自动将检索到的数据保存到Core Data并继续运行。从云中获取所有数据后,该应用程序现在平均运行70MB内存。如果我然后关闭应用并重新启动它,它会发现存储在Core Data中的数据然后不需要CloudKit提取,因此它可以正常进行。当它像这样工作,并且还没有执行任何CK操作时,它平均运行38MB内存。

有没有人知道为什么会发生这种情况?我分享了我的代码,但我甚至不知道从哪里开始。

0 个答案:

没有答案