iOS核心数据有时会在加载

时间:2018-02-13 03:45:02

标签: ios core-data

我有一个应用程序商店可以使用Core Data几年的应用程序。当应用程序启动时,用户将进入应用程序的主屏幕,其中显示几个按钮。单击任何按钮将用户带到另一个屏幕,该屏幕显示从UITableView中的Core Data加载的数据(每个按钮将用户带到不同的数据)。这是应用程序可用时在我的应用程序中运行的基本功能。

在去年的某个时候,我注意到在随机时间,保存在应用程序中的数据有时不会立即加载。第一次发生这种情况时,我点击了其中一个按钮,然后进入了一个空白屏幕。我回到主屏幕并尝试了其他按钮,每个屏幕都是空白的,所以我认为我的所有数据都以某种方式被擦除了。我继续回到主屏幕,只是坐在那里思考了大约15秒,然后我又点击了其中一个按钮,但这次数据出现了。所有其他屏幕现在也有数据。

我还没有在很长一段时间内更新应用,所以我的代码没有变化。我不记得在我开始观察这个问题的时候有一个新的iOS版本,但这是可能的。

自从我第一次发现它以来已经发生过几次(过去6个月总共发生了3到4次),但似乎根本没有模式。一旦数据最终在这些情况下加载,它总是会从那一点开始加载。这使我无法对其进行调试,因为我不能强迫这种情况发生(99%的时间数据会立即加载)。

之前是否有人遇到此问题,或者有任何关于如何处理的建议?我在模拟器上见过这个,在实际设备上见过一次。

1 个答案:

答案 0 :(得分:0)

更新UI的随机延迟是尝试从主队列外部更新UI的经典标志。它通常会起作用,但可能会延迟,延迟不会保持一致。确保在尝试更新UI时,您已进入主队列。如有必要,请使用DispatchQueue.main.async()

假设您正在使用Xcode 9,请确保主线程检查器已打开。当您从Xcode运行应用程序时,这将帮助您找到此类问题。转到Xcode窗口顶部的目标弹出窗口,然后选择"编辑方案......"。在" Run"窗口部分,转到"诊断"并确保"主线程检查器"已开启。

Main Thread Checker