当代码的某些部分更改来自主线程以外的其他线程的 UI 项时,此错误将记录到控制台。但是我怎样才能找到它在哪里这样做呢?
"此应用程序正在从后台线程修改自动布局引擎"的主要问题是,它似乎在实际问题发生后很长时间才被记录下来,这使得故障排除变得非常困难。
我设法通过创建三个符号断点来解决这个问题。
调试>断点>创建符号断点...
断点 1:
-
符号:
-[UIView setNeedsLayout]
-
条件:
!(BOOL)[NSThread isMainThread]
断点 2:
-
符号:
-[UIView layoutIfNeeded]
-
条件:
!(BOOL)[NSThread isMainThread]
断点 3:
-
符号:
-[UIView updateConstraintsIfNeeded]
-
条件:
!(BOOL)[NSThread isMainThread]
使用这些断点,您可以轻松地在实际行上错误地调用非主线程上的 UI 方法时出现中断。