因此,我们最近将应用程序的更新(Swift)发送到了App Store。一天后,我们的一些升级用户报告说该应用程序正在“冻结” ,并且无法正常运行。
奇怪的是,我们试图在我们的设备中从App Store安装相同版本的应用,并且一切正常。我们尝试使用遇到“冻结” 的某些用户帐户,但是所有测试似乎都可以正常工作。该应用程序冻结的报告数量一直在增加,我们不知道如何修复或调试该应用程序,以使我们真正了解正在发生的情况。
受影响的用户已经尝试重新安装该应用程序,但问题仍然存在。
有人知道如何调试此类问题吗?有没有可以用来调试它的工具?
答案 0 :(得分:1)
根据我的经验,这通常是由于在主线程上花费了一些时间造成的。
就我而言,它是使用Codable将某些内容保存到“用户默认设置”中的。事实证明,这没有扩大规模。对于少量数据,我从未遇到过问题,但是拥有大量数据的用户发现界面冻结了半分钟。我通过将该操作移至后台线程并更改了数据存储模型来解决了该问题。
因此,在有大量数据的情况下,请寻找您的应用可能无法扩展的功能。
答案 1 :(得分:0)
我们找到了问题的根源,它是由ReverseGeocode引起的“死锁”,该反向包装在主线程中错误调用的BlockingObservable(RxSwift)中。当ReverseGeocode请求花费的时间比预期的时间长,并且无法重现该请求时,就会发生这种情况,因为在我们的办公室中,我们在大约一两秒钟内得到了reverseGeocoding响应。
为解决此问题,我们只是将调用ReverseGeocode的代码包装到一个单独的线程中,这样它就不会阻塞主线程。