Ios Can';t复制应用程序冻结,如何调试它?

Ios Can';t复制应用程序冻结,如何调试它?,ios,Ios,因此,我们最近向应用商店发送了我们的应用程序(swift)的更新。一天后,我们的一些升级用户报告说,该应用程序“冻结”,无法正常运行 奇怪的是,我们试图在我们的设备上安装来自应用商店的相同版本的应用程序,但一切似乎都按预期运行。我们尝试使用一些遇到“冻结”的用户帐户,但所有测试似乎都正常工作。应用程序冻结的报告数量不断增加,我们不知道如何修复或调试它,以便我们真正知道发生了什么 受影响的用户已尝试重新安装应用程序,但问题仍然存在 有人知道如何调试这种问题吗?有没有一个工具可以用来调试它?根据我的

因此,我们最近向应用商店发送了我们的应用程序(swift)的更新。一天后,我们的一些升级用户报告说,该应用程序“冻结”,无法正常运行

奇怪的是,我们试图在我们的设备上安装来自应用商店的相同版本的应用程序,但一切似乎都按预期运行。我们尝试使用一些遇到“冻结”的用户帐户,但所有测试似乎都正常工作。应用程序冻结的报告数量不断增加,我们不知道如何修复或调试它,以便我们真正知道发生了什么

受影响的用户已尝试重新安装应用程序,但问题仍然存在


有人知道如何调试这种问题吗?有没有一个工具可以用来调试它?

根据我的经验,这通常是由于在主线程上执行一些耗时的操作造成的

在我的例子中,它使用Codable将一些内容保存到用户默认值中。事实证明,这并没有扩大规模。对于少量数据,我从来没有遇到过问题,但是拥有大量数据的用户发现界面冻结了半分钟。我通过将该操作转移到后台线程并更改数据存储模型来解决这个问题


所以,寻找你的应用程序在有大量数据时可能无法扩展的功能

我们找到了问题的原因,它是一个“死锁”,由主线程中错误调用的BlockingObservable(RxSwift)中包装的ReverseGeocode造成的。当ReverseGeocode请求花费的时间超过预期时,就会发生这种情况。我们无法复制它,因为在我们的办公室,我们在一两秒钟内就得到了ReverseGeocode响应


为了解决这个问题,我们只需将调用ReverseGeocode的代码包装到一个单独的线程中,这样它就不会阻塞主线程。

如果你的应用程序使用internet,你可能想看看如果你的internet连接很慢会发生什么。也许您正在主线程上执行某些网络请求,而某些用户的internet连接速度比您慢。