在模拟器中调试无响应的UI

时间:2013-12-28 06:17:31

标签: ios debugging xcode-instruments

当我在某个时刻在模拟器中运行我的应用程序时,UI变得完全没有响应(表格视图不滚动,按钮没有反应等)。

我知道通常这是锁定主线程(负责处理UI)的结果,但是所有繁重的负载都是异步发生的(据我所知)。

我查看了CPU表,所有线程似乎都是0%。奇怪的是,如果我尝试使用乐器进行配置,那么UI就不会被锁定。我也没有发现任何奇怪的乐器,CPU使用率似乎正常/低,时间分析器似乎没有显示任何奇怪的行为。

我的一般问题是:即使CPU负载为0,UI会变得无响应的原因还有哪些?调试此类事情的最佳方法是什么?

更具体地说:对于这个特定问题,应用程序的详细信息可能过于复杂,但仅适用于某些情况:

  • 我正在使用AFIncrementalStore + CoreData
  • 只有当我尝试获取多个关系时,才会发生UI无响应(通过增量存储委托。
  • 在此期间似乎没有任何网络活动(我可以告诉)。我可以监视我的服务器上的日志,但在那段时间似乎没有任何内容。
  • 如上所述,当使用乐器/配置文件运行时,UI不会锁定。
  • 我正在使用一个视图控制器使用提取的结果控制器来测试这个数据。

我最好的猜测是主线程上某处发生了死锁,这就是为什么CPU负载报告0%但UI仍无响应的原因。我不知道如何调试它。这可能是CoreData领域的深处,也可能是第三方AF类之一。我在这个地方洒了断点,没有一个被击中。

我现在已经摸不着头几个小时了。在没有详细了解我的特定应用程序的实现的情况下,我希望得到一些针对此类问题的一般调试技巧。还有什么我应该尝试的吗?

我正在运行XCode 5.0.2,模拟器在iOS 7.0.3上(为了它的价值)。

任何提示&非常感谢技巧!

0 个答案:

没有答案