当代码的某些部分正在从主线程以外的其他线程更改 UI 项目时,此错误将记录到控制台。但我如何才能找到它在哪里执行此操作?
最佳答案
“此应用程序正在从后台线程修改自动布局引擎”的主要问题是,它似乎在实际问题发生后很长时间才被记录下来,这使得故障排除变得非常困难。
我通过创建三个符号断点设法解决了这个问题。
调试 > 断点 > 创建符号断点...
断点 1:
符号:
-[UIView setNeedsLayout]
条件:
!(BOOL)[NSThread isMainThread]
断点 2:
符号:
-[UIView layoutIfNeeded]
条件:
!(BOOL)[NSThread isMainThread]
断点 3:
符号:
-[UIView updateConstraintsIfNeeded]
条件:
!(BOOL)[NSThread isMainThread]
使用这些断点,您可以轻松地在您在非主线程上错误调用 UI 方法的实际行上打断。
关于ios - : This application is modifying the autolayout engine from a background thread如何解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689126/