有没有人知道如果我的应用程序冻结了我需要检查什么?我的意思是,我可以在iPad屏幕上看到应用程序,但是没有按钮响应。我尝试调试代码,当我点击按钮时,但我还没有看到任何东西。我正在阅读Instruments工具的相关内容; 具体来说我该如何使用它们?
有人能帮帮我吗?我只需要解释一下如何使用这些工具。
有没有人知道如果我的应用程序冻结了我需要检查什么?我的意思是,我可以在iPad屏幕上看到应用程序,但是没有按钮响应。我尝试调试代码,当我点击按钮时,但我还没有看到任何东西。我正在阅读Instruments工具的相关内容; 具体来说我该如何使用它们?
有人能帮帮我吗?我只需要解释一下如何使用这些工具。
||
的小暂停按钮。它在日志区域上方的条形区域的左侧。一旦你暂停它,你就可以看到所有线程堆栈跟踪在左侧,并且你可以看到它卡在哪个方法上。 - Ben Baron除了暂停并跟踪堆栈轨迹外,我认为还有一件额外的事情要做,就是检查代码中是否有任何导致应用程序冻结的循环。
最近我遇到了类似的问题,但堆栈跟踪并没有帮上太多忙。后来我发现,当在layoutsubviews方法中调用reloadData()
时,我正在进行一个永久循环,这导致应用程序冻结,而且没有任何错误消息和instruments的帮助。
顶部的答案是正确的。您可以使用“暂停”选项进行调试。阻止主线程的最常见方法是在调度相同线程上的dispatch_sync
。有时,您会从dispatch_once
调用相同的代码。
layoutSubviews()
中添加了setNeedsLayout()
,导致无限循环并使应用程序冻结。我建议检查您的大小,特别是在集合视图中,如果它们不适合,它们将会冻结您的应用程序,还要检查您的约束条件。
我也遇到了与iOS 13.4相同的问题,然后我尝试了上面的解决方案,但它并没有解决问题。所以我在Storyboard中有一个带有断点约束的元素。因此,在解决约束后,问题得到了解决。