icloud核心数据内存问题

时间:2014-06-03 22:08:16

标签: ios core-data memory icloud

我认为这是一个相对复杂的数据模型,具有多个多对多关系,这些关系是获得我想要的功能所必需的。没有iCloud,一切都运行良好:CPU低,内存使用率通常约为15 mb / s,最大值为30。

我已经实现了简单的iCloud核心数据同步,以及Tim Roadley在这里找到的非常有帮助的教程http://timroadley.com/2012/04/03/core-data-in-icloud/

  1. 第一个问题:首次打开应用时,有时存在无法访问存储数据的延迟。我做一个NSFetchRequest并返回一个空数组。几秒钟后,我可以检索数据。

    为什么会这样?我认为在Xcode 5中启用了iCloud,正在制作两个数据存储,一个用于本地使用,一个用于iCloud?不应该访问本地商店?

    我通过拥有一个“门户”视图控制器来获得第一位,因此可以(在大多数情况下)可以克服延迟(有时候你会看到一个空白的TVC ......不开心)

  2. 第二个问题,更紧迫的问题:几秒钟后(通常在15左右)后台线程中发生了一些事情,CPU使用率下降到99%,内存从10上升到大约100 mb / s 。它仍然很高 - 它没有上升(也没有崩溃),并且它没有用于剩余的使用(我的意思是至少我经常运行的2个小时)。没有崩溃!只是有点滞后的界面互动。

    为什么会发生这种情况,我该如何解决?

  3. 我对iCloud同步的工作原理并不十分了解;以某种方式制作事务日志,存储为plists,并将其发送到某处并发生某些事情。我假设的是我拥有的事务日志真的很大 - 也许是因为我有几个多对多的关系?这个问题就是这样说的(他的问题没有解决方案,我也没有不断增加的内存使用量:我的某个点停止了): Core Data with iCloud causing low memory warnings and crashes, memory usage constantly grows

    想法: - 如果是交易日志,是否应该在某些时候将其删除?说日志上传到icloud后?为什么它只是坐在那里占用空间? - 有没有办法定义同步完成的时间?或手动删除事务日志?有谁经历过这个/解决了吗?

1 个答案:

答案 0 :(得分:0)

乔希,

您没有发布任何代码;所以提供建议有点受到重视。假设您的获取请求中有完成块,您确定它只是从iCloud获取数据所需的时间。有点令人困惑,但在这个步骤中解释,iCloudKit不会在本地缓存任何数据,它只是一种传输机制。

Using Core Data, iCloud and CloudKit for syncing and backup and how it works together

我怀疑你的CPU问题与iCloudKit有关,很有可能向iCloudKit发出多个请求/线程。看看我的问题,这里的代码是一个调用序列,如果你循环你的iCloudKit代码,调用它本身你肯定会看到你描述的行为。

CKFetchRecordsOperation + CKQueryOperations ... what am I missing?