【发布时间】:2015-04-14 05:10:39
【问题描述】:
我已经被这个东西困了好几个小时了,我不知道还要搜索什么。
我能提供的东西不多,因为调试器没有显示任何错误,但它是可重现的——我点击表格视图中的一个非常具体的项目,其行为应该关闭该模式,然后我的应用程序冻结。表格视图中的其他项目不会发生这种情况 - 模式完全关闭并且应用程序继续运行。
我检查了this answer,怀疑这是一个死锁,但是:
- 每次我点击调试器中的暂停按钮时,主线程都会执行不同的操作。
- 从 Xcode 的 Debug navigator 中看到的 CPU 使用率随着时间的推移而增加。
- 我在我的自定义 UIControl 的
layoutSubviews方法之一设置了断点,并且它不断被调用。它不调用[super layoutSubviews],不调用任何人的setNeedsLayout,只是设置其子视图的框架,因为我没有使用自动布局。
我该如何调试这个东西?我一直在查看 Xcode Instruments,但无法理解所看到的数据。具体来说,系统跟踪模板似乎能够在发生冻结时立即停止,这与其他继续记录的模板不同。
补充:我在系统跟踪看到的内容
【问题讨论】:
-
您是否在点击该单元格后检查了递归方法调用。添加一些代码
-
你能确认你不是从后台线程操作 UI 吗?在所有情况下都不会在主线程上调用 didSelectRowAtIndexPath (stackoverflow.com/a/22173707/80678)
-
@kenleycapps 不,didSelectRowAtIndexPath 没有在后台线程中运行。它在主线程上运行,那里没有 dispatch_asyncs。
-
时间分析工具可能会更有用。选择“反转调用树”和“隐藏系统库”,看看它显示了什么
标签: ios iphone ipad xcode-instruments