问题现象
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
我们还可以从堆栈遗迹中看到:导致超时的元凶是 NSPersistentCloudKitContainer 对象构造器。其实还有很多其它情况也会导致 App 被看门狗终止,这到底是怎么一回事呢?
在本篇博文中,您将学到以下内容:
- 如何手动启动(默认是自动同步) CoreData 本地与 iCloud 云数据之间的同步操作?
- 本例中 NSPersistentCloudKitContainer 构造器为何要对此负责?
- 什么情况下 App 启动会招致系统看门狗强行关闭以及修复的一般思路?