【发布时间】:2018-01-23 03:42:30
【问题描述】:
当代码的某些部分从主线程以外的其他线程更改 UI 项目时,此错误会记录到控制台。但是我怎样才能找到它在哪里这样做呢?
【问题讨论】:
标签: ios xcode background autolayout ios-autolayout
当代码的某些部分从主线程以外的其他线程更改 UI 项目时,此错误会记录到控制台。但是我怎样才能找到它在哪里这样做呢?
【问题讨论】:
标签: ios xcode background autolayout ios-autolayout
“此应用程序正在从后台线程修改自动布局引擎”的主要问题是,它似乎在实际问题发生后很长时间才被记录,这使得故障排除非常困难。
我通过创建三个符号断点设法解决了这个问题。
调试 > 断点 > 创建符号断点...
断点 1:
符号:-[UIView setNeedsLayout]
条件:!(BOOL)[NSThread isMainThread]
断点 2:
符号:-[UIView layoutIfNeeded]
条件:!(BOOL)[NSThread isMainThread]
断点 3:
符号:-[UIView updateConstraintsIfNeeded]
条件:!(BOOL)[NSThread isMainThread]
使用这些断点,您可以轻松地在您错误地调用非主线程上的 UI 方法的实际行中中断。
【讨论】:
!(BOOL)[NSThread isMainThread],我就不会找到你的。