CoreData 同步 iCloud 数据导致 App 启动超时被系统 watchdog 终止的原因及解决

Posted 大熊猫侯佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CoreData 同步 iCloud 数据导致 App 启动超时被系统 watchdog 终止的原因及解决相关的知识,希望对你有一定的参考价值。


问题现象

CoreData + iCloud 支持的 App 在启动时偶尔会出现被系统强制退出的情况,用 Xcode 也无法中断调试这种崩溃,查看真机上的崩溃日志如下:

如上图所示,我可以了解到 App 崩溃的原因是由于启动超时被系统看门狗(watchdog)强行关闭了:

process-launch watchdog transgression: application<com.hopy.MyApp>:804 exhausted real (wall clock) time allowance of 20.00 seconds

在本篇博文中,您将学到以下内容:

  • 如何手动启动(默认是自动同步) CoreData 本地与 iCloud 云数据之间的同步操作?
  • 本例中 NSPersistentCloudKitContainer 构造器为何要对此负责?
  • 什么情况下 App 启动会招致系统看门狗强行关闭以及修复的一般思路?

我们还可以从堆栈遗迹中看到:导致超时的元凶是 NSPersistentCloudKitContainer 对象构造器。其实还有很多其它情况也会导致 App 被看门狗终止,这到底是怎么一回事呢?

以上是关于CoreData 同步 iCloud 数据导致 App 启动超时被系统 watchdog 终止的原因及解决的主要内容,如果未能解决你的问题,请参考以下文章

合并具有相同属性但 ID 不同的 NSManagedObject,与 iCloud 同步会导致重复(Core Data,Swift 1.2)

Core Data iCloud 同步图像

通过 iCloud 仅同步“一些”我的 coreData

iCloud + 预加载的 CoreData

iCloud 与 Coredata 同步

在应用升级期间避免 iCloud 同步上的重复数据