【问题标题】:icloud core data memory problemsicloud核心数据内存问题
【发布时间】:2014-07-24 10:00:13
【问题描述】:

我有一个我认为是相对复杂的数据模型,为了获得我想要的功能,需要多个多对多关系。没有 iCloud,一切都很好:CPU 低,内存使用量通常在 15 mb/s 左右,最大为 30。

我已经按照 Tim Roadley 在此处找到的非常有用的教程实现了基本的 iCloud 核心数据同步 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 个小时)。没有崩溃!只是有点滞后的界面交互。

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

我对 iCloud 同步的工作原理不是很了解;以某种方式制作事务日志,存储为 plist,然后发送到某个地方,然后发生了一些事情。我假设我拥有的事务日志非常大 - 也许是由于我拥有的几个多对多关系?这个问题暗示了(他的问题没有解决方案,而且我也没有不断增加的内存使用量:我的停在某个点): Core Data with iCloud causing low memory warnings and crashes, memory usage constantly grows

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

【问题讨论】:

  • 听起来是时候打开 Instruments 应用了。

标签: ios core-data memory icloud


【解决方案1】:

乔希,

您没有发布任何代码;所以给建议有点命中注定。假设您的获取请求中有一个完成块,您确定延迟不仅仅是从 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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 2012-04-15
    • 2014-05-07
    • 2013-01-06
    • 2018-01-08
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多